#ifndef __MPSIZECTORS_API_H__
#define __MPSIZECTORS_API_H__

#include <time.h>

/////////////////////////////////////////////////////////////////////////
//// MPSizectorS API
/////////////////////////////////////////////////////////////////////////


/// \~chinese
/// <summary>
///制造商内部使用，DLL导出的标识。
/// </summary>
/// \~english
/// <summary>
///Vender internal use, the sign for DLL export.
/// </summary>
#ifndef _WIN32
#define DLL_EXPORT
#else
#define DLL_EXPORT __declspec(dllexport)
#endif

/*************Consts***********/

/// \~chinese
/// <summary>
/// MPDeviceInfo中DeviceName的缓冲区长度。
/// </summary>
/// \~english
/// <summary>
/// The DeviceName buffer size of MPDeviceInfo.
/// </summary>
#define MPSIZECTORS_PRODUCT_NAME_MAX_LEN 32

/// \~chinese
/// <summary>
/// MPDeviceInfo中DeviceSerialNumber的缓冲区长度。
/// </summary>
/// \~english
/// <summary>
/// The DeviceSerialNumber buffer size of MPDeviceInfo.
/// </summary>
#define MPSIZECTORS_PRODUCT_SERIAL_NUMBER_MAX_LEN 32

/// \~chinese
/// <summary>
/// API版本号。
/// </summary>
/// \~english
/// <summary>
/// API Version.
/// </summary>
#define MPSIZECTORS_API_VER 2.10f

/// \~chinese
/// <summary>
/// LOG文本的最大长度
/// </summary>
/// \~english
/// <summary>
/// Maximum length of the log string.
/// </summary>
#define MPSIZECTORS_MAX_LOG_STRING_LEN 256

/// \~chinese
/// <summary>
/// DEBUG STATES长度
/// </summary>
/// \~english
/// <summary>
/// length of the debug states regs.
/// </summary>
#define MPSIZECTORS_DEBUG_STATES_SIZE 32

/// \~chinese
/// <summary>
/// 设备列表能接受的最大设备数量
/// </summary>
/// \~english
/// <summary>
/// Maximum number of devices that the device list can accept. 
/// </summary>
#define MPSIZECTORS_MAX_DEVICE_CNT 32


/*************Enumerations***********/


/// \~chinese
/// <summary>
/// 日志输出媒介枚举。作为设备类的构造函数参数
/// </summary>
/// \~english
/// <summary>
/// Enumeration of log output media. Used as parameter when constructing the device class.
/// </summary>
enum MPSizectorS_LogMediaType
{
	/// \~chinese
	/// <summary>
	/// 无日志输出
	/// </summary>
	/// \~english
	/// <summary>
    /// No log output.
	/// </summary>
	MPSizectorS_LogMediaType_Off = 0,

	/// \~chinese
	/// <summary>
	/// 当运行控制台程序时，将日志在控制台中打印输出。
	/// </summary>
	/// \~english
	/// <summary>
    /// Log output by print on console, Only used when running a console application.
	/// </summary>
	MPSizectorS_LogMediaType_Console = 1,

	/// \~chinese
	/// <summary>
	/// 将日志存储在可执行文件同目录下的日志文件中。
	/// </summary>
	/// \~english
	/// <summary>
    /// Log output to a log file under the exe path.
	/// </summary>
	MPSizectorS_LogMediaType_File = 2,

	/// \~chinese
	/// <summary>
	/// 将日志通过回调函数传递给客户处理。
	/// </summary>
	/// \~english
	/// <summary>
    /// Log output handled by user call back function.
	/// </summary>
	MPSizectorS_LogMediaType_CallBack = 3
};

/// \~chinese
/// <summary>
/// 设备状态枚举。
/// </summary>
/// \~english
/// <summary>
/// Enumeration of device states.
/// </summary>
enum MPSizectorS_DeviceStateType
{
	/// \~chinese
	/// <summary>
	/// 设备未连接。
	/// </summary>
	/// \~english
	/// <summary>
    /// Device is disconnected.
	/// </summary>
	MPSizectorS_DeviceStateType_Disconnected = 0,

	/// \~chinese
	/// <summary>
	/// 设备正在初始化。
	/// </summary>
	/// \~english
	/// <summary>
    /// Device is during the process of initialization.
	/// </summary>
	MPSizectorS_DeviceStateType_UnderInit = 1,

	/// \~chinese
	/// <summary>
	/// 设备处于待命状态，可进行一次新的拍摄。
	/// </summary>
	/// \~english
	/// <summary>
    /// Device is stand by, ready to begin a new capture.
	/// </summary>
	MPSizectorS_DeviceStateType_StandBy = 2,

	/// \~chinese
	/// <summary>
	/// 设备正在曝光。
	/// </summary>
	/// \~english
	/// <summary>
    /// Device is under the process of exposure.
	/// </summary>
	MPSizectorS_DeviceStateType_UnderExposure = 3,

	/// \~chinese
	/// <summary>
	/// 设备正在传输数据。
	/// </summary>
	/// \~english
	/// <summary>
    /// Device is under the process of data transfer.
	/// </summary>
	MPSizectorS_DeviceStateType_UnderTransfer = 4,
};

/// \~chinese
/// <summary>
/// 设备连接接口类型枚举。
/// </summary>
/// \~english
/// <summary>
/// Enumeration of connection interface type.
/// </summary>
enum MPSizectorS_InterfaceType
{
	/// \~chinese
	/// <summary>
	/// 空类型，当未连接时或连接接口类型未确定时使用。
	/// </summary>
	/// \~english
	/// <summary>
    /// Null type, used when interface not connected or not decided.
	/// </summary>
	MPSizectorS_InterfaceType_NULL = 0,
	
	/// \~chinese
	/// <summary>
	/// 连接接口为USB2.0。
	/// </summary>
	/// \~english
	/// <summary>
    /// Interface type is USB2.0.
	/// </summary>
	MPSizectorS_InterfaceType_U2 = 1,
	
	/// \~chinese
	/// <summary>
	/// 连接接口为USB3.0。
	/// </summary>
	/// \~english
	/// <summary>
    /// Interface type is USB3.0.
	/// </summary>
	MPSizectorS_InterfaceType_U3 = 2
};

/// \~chinese
/// <summary>
/// 设备工作模式枚举。
/// </summary>
/// \~english
/// <summary>
/// Enumeration of device working mode.
/// </summary>
enum MPSizectorS_WorkingModeType
{
	/// \~chinese
	/// <summary>
	/// 快速3D模式。
	/// </summary>
	/// \~english
	/// <summary>
    /// Fast 3D mode.
	/// </summary>
	MPSizectorS_WorkingModeType_3D_Fast = 0,
	
	/// \~chinese
	/// <summary>
	/// 标准3D模式。
	/// </summary>
	/// \~english
	/// <summary>
    /// Standard 3D mode.
	/// </summary>
	MPSizectorS_WorkingModeType_3D_Standard = 1,
	
	/// \~chinese
	/// <summary>
	/// 精准3D模式。
	/// </summary>
	/// \~english
	/// <summary>
    /// Precise 3D mode.
	/// </summary>
	MPSizectorS_WorkingModeType_3D_Precise = 2,
	
	/// \~chinese
	/// <summary>
	/// 超准3D模式。
	/// </summary>
	/// \~english
	/// <summary>
    /// Super precise 3D mode.
	/// </summary>
	MPSizectorS_WorkingModeType_3D_SuperPrecise = 3,
	
	/// \~chinese
	/// <summary>
	/// 全白照明2D模式。
	/// </summary>
	/// \~english
	/// <summary>
    /// 2D mode with full white illumination.
	/// </summary>
	MPSizectorS_WorkingModeType_2D_White = 4,
	
	/// \~chinese
	/// <summary>
	/// 无照明2D模式。
	/// </summary>
	/// \~english
	/// <summary>
    /// 2D mode with no illumination.
	/// </summary>
	MPSizectorS_WorkingModeType_2D_Black = 5,
	
	/// \~chinese
	/// <summary>
	/// 带有网格图案投影的2D模式。
	/// </summary>
	/// \~english
	/// <summary>
    /// 2D mode with grid pattern projection.
	/// </summary>
	MPSizectorS_WorkingModeType_2D_Grid = 6,
	
	/// \~chinese
	/// <summary>
	/// 曝光强度预测图。
	/// </summary>
	/// \~english
	/// <summary>
    /// 2D mode of exposure prediction.
	/// </summary>
	MPSizectorS_WorkingModeType_2D_ExposurePrediction = 7
};

/// \~chinese
/// <summary>
/// 触发源枚举。
/// </summary>
/// \~english
/// <summary>
/// Enumeration of trigger source.
/// </summary>
enum MPSizectorS_TriggerSourceType
{
	/// \~chinese
	/// <summary>
	/// 仅接收软件触发。
	/// </summary>
	/// \~english
	/// <summary>
    /// Only triggered by software trigger.
	/// </summary>
	MPSizectorS_TriggerSourceType_SoftTriggerOnly = 0,
	
	/// \~chinese
	/// <summary>
	/// 连续拍摄，当一次拍摄完成后自动开始下一次拍摄。
	/// </summary>
	/// \~english
	/// <summary>
    /// Keep running, automatically start next snap when one capture is finished.
	/// </summary>
	MPSizectorS_TriggerSourceType_KeepRunning = 1,
	
	/// \~chinese
	/// <summary>
	/// 通过硬件引脚I0触发或软件触发。
	/// </summary>
	/// \~english
	/// <summary>
    /// Triggered by hardware pin I0 and software trigger.
	/// </summary>
	MPSizectorS_TriggerSourceType_HardTrigger_I0 = 2,
	
	/// \~chinese
	/// <summary>
	/// 通过硬件引脚I1触发或软件触发。
	/// </summary>
	/// \~english
	/// <summary>
    /// Triggered by hardware pin I1 and software trigger.
	/// </summary>
	MPSizectorS_TriggerSourceType_HardTrigger_I1 = 3
};

/// \~chinese
/// <summary>
/// 曝光模式枚举。
/// </summary>
/// \~english
/// <summary>
/// Enumeration of exposure mode.
/// </summary>
enum MPSizectorS_ExposureModeType
{
	/// \~chinese
	/// <summary>
	/// 手动曝光模式。采用固定的曝光次数和曝光强度。在3D工作模式下，当曝光次数大于1，3D数据为HDR融合的结果。
	/// </summary>
	/// \~english
	/// <summary>
    /// Manual exposure mode. Using fixed exposure number and fixed exposure intensity values. For 3D working modes, when exposure number is set to be more than 1, 3D result is HDR result.
	/// </summary>
	MPSizectorS_ExposureModeType_Manual = 0,
	
	/// \~chinese
	/// <summary>
	/// 手动重复曝光模式。采用曝光强度1进行指定次数的重复拍摄。最终输出的3D数据为多次拍摄得到的多个3D数据的平均值。2D工作模式下不适用。
	/// </summary>
	/// \~english
	/// <summary>
    /// Manual repeat exposure mode. Using the 1st 3D exposure intensity value to repeat fixed number of exposures. The final 3D result is the averaged value of multiple exposures. Not valid for 2D working mode.
	/// </summary>
	MPSizectorS_ExposureModeType_ManualRepeat = 1,
	
	/// \~chinese
	/// <summary>
	/// 自动NHDR曝光模式。设备根据指定的曝光次数自动决定曝光强度。2D工作模式下不适用。
	/// </summary>
	/// \~english
	/// <summary>
    /// Auto NHDR exposure mode. Exposure intensity values are decided by device automatically according to the configured exposure number. Not valid for 2D working mode.
	/// </summary>
	MPSizectorS_ExposureModeType_AutoNHDR = 2,
	
	/// \~chinese
	/// <summary>
	/// 自动PHDR曝光模式。设备根据指定的3D成像质量阈值
	/// </summary>
	/// \~english
	/// <summary>
    /// Auto PHDR exposure mode. Exposure number and exposure intensity values are decided by device automatically according to the configured 3D quality threshold. Not valid for 2D working mode.
	/// </summary>
	MPSizectorS_ExposureModeType_AutoPHDR = 3
};

/// \~chinese
/// <summary>
/// 输出引脚模式枚举。
/// </summary>
/// \~english
/// <summary>
/// Enumeration of output pin mode.
/// </summary>
enum MPSizectorS_OutputPinModeType
{	
	/// \~chinese
	/// <summary>
	/// 由用户控制。输出值由用户控制的寄存器决定。
	/// </summary>
	/// \~english
	/// <summary>
    /// Controlled by user. Output value is user-controlled register value.
	/// </summary>
	MPSizectorS_OutputPinModeType_UserControlled = 0,
	
	/// \~chinese
	/// <summary>
	/// 输出信号为初始化状态。对于正极性，1表示初始化完成。
	/// </summary>
	/// \~english
	/// <summary>
    /// The output signal indicates init state. For positive polarity, 1 indicates for init done.
	/// </summary>
	MPSizectorS_OutputPinModeType_InitDone = 1,
	
	/// \~chinese
	/// <summary>
	/// 输出信号为正在曝光状态。对于正极性，1表示正在曝光。
	/// </summary>
	/// \~english
	/// <summary>
    /// The output signal indicates exposure state. For positive polarity, 1 indicates for device during exposure
	/// </summary>
	MPSizectorS_OutputPinModeType_UnderExposure = 2,
	
	/// \~chinese
	/// <summary>
	/// 输出信号为忙状态。对于正极性，1表示设备正忙。与正在曝光不同，当设备正在传输数据时，忙状态也为1。
	/// </summary>
	/// \~english
	/// <summary>
    /// The output signal indicates busy state. For positive polarity, 1 indicates for busy. Different to the under exposure signal, busy signal is 1 also when device is during data transfer.
	/// </summary>
	MPSizectorS_OutputPinModeType_Busy = 3
};

/// \~chinese
/// <summary>
/// 3D数据输出模式枚举。
/// </summary>
/// \~english
/// <summary>
/// Enumeration of 3D data output mode.
/// </summary>
enum MPSizectorS_DataOutModeType
{
	/// \~chinese
	/// <summary>
	/// 浮点数点云3D数据模式。X,Y,Z分别通过32位浮点数表示。
	/// </summary>
	/// \~english
	/// <summary>
    /// Float point cloud 3D data mode. X, Y, Z is represented by a 32-bit float respectively.
	/// </summary>
	MPSizectorS_DataOutModeType_FloatPointCloud = 0,
	
	/// \~chinese
	/// <summary>
	/// 定点数点云3D数据模式。X,Y,Z分别通过16位定点数表示。
	/// </summary>
	/// \~english
	/// <summary>
    /// Fixed point cloud 3D data mode, X, Y, Z is represented by a 16-bit unsigned short respectively.
	/// </summary>
	MPSizectorS_DataOutModeType_FixPointCloud = 1
};

/// \~chinese
/// <summary>
/// 温度反馈状态枚举。
/// </summary>
/// \~english
/// <summary>
/// Enumeration of temperature feed back states.
/// </summary>
enum MPSizectorS_TemperatureFeedBackStateType
{
	/// \~chinese
	/// <summary>
	/// 温度在范围内。
	/// </summary>
	/// \~english
	/// <summary>
    /// Temperature is in range.
	/// </summary>
	MPSizectorS_TemperatureFeedBackStateType_InRange = 0,
	
	/// \~chinese
	/// <summary>
	/// 温度过高。
	/// </summary>
	/// \~english
	/// <summary>
    /// Temperature is too high.
	/// </summary>
	MPSizectorS_TemperatureFeedBackStateType_TooHigh = 1,
	
	/// \~chinese
	/// <summary>
	/// 温度过低。
	/// </summary>
	/// \~english
	/// <summary>
    /// Temperature is too low.
	/// </summary>
	MPSizectorS_TemperatureFeedBackStateType_TooLow = 2
};

/// \~chinese
/// <summary>
/// 触发信号来源枚举
/// </summary>
/// \~english
/// <summary>
/// Enumeration of Trigger Serial Number (TSN) source.
/// </summary>
enum MPSizectorS_TSNSourceType
{
	/// \~chinese
	/// <summary>
	/// 触发引号由软件触发产生。
	/// </summary>
	/// \~english
	/// <summary>
    /// Triggered by software trigger.
	/// </summary>
	MPSizectorS_TSNSourceType_SoftTrigger = 0,
	
	/// \~chinese
	/// <summary>
	/// 触发信号由自动触发产生（工作在连续拍摄模式下）。
	/// </summary>
	/// \~english
	/// <summary>
    /// Triggered by auto trigger(keep running mode).
	/// </summary>
	MPSizectorS_TSNSourceType_AutoTrigger = 1,
	
	/// \~chinese
	/// <summary>
	/// 触发信号由外部硬件引脚产生。
	/// </summary>
	/// \~english
	/// <summary>
    /// Triggered by external hardware pin signal.
	/// </summary>
	MPSizectorS_TSNSourceType_HardTrigger = 2
};

/// \~chinese
/// <summary>
/// 数据格式枚举。
/// </summary>
/// \~english
/// <summary>
/// Enumeration of data format.
/// </summary>
enum MPSizectorS_DataFormatType
{
	/// \~chinese
	/// <summary>
	/// 浮点数点云，每个点占用16字节。
	/// </summary>
	/// \~english
	/// <summary>
    /// Float point cloud, 16 bytes per point.
	/// </summary>
	MPSizectorS_DataFormatType_FloatPointCloud = 0,
	
	/// \~chinese
	/// <summary>
	/// 定点数点云，每个点占用8字节。
	/// </summary>
	/// \~english
	/// <summary>
    /// Fixed point cloud, 8 bytes per point.
	/// </summary>
	MPSizectorS_DataFormatType_FixPointCloud = 1,
	
	/// \~chinese
	/// <summary>
	/// 2D图像，每个像素占用1字节。
	/// </summary>
	/// \~english
	/// <summary>
    /// Image 2D, 1 byte per pixel.
	/// </summary>
	MPSizectorS_DataFormatType_Image2D = 8
};


/*************Structures***********/

////Device Info Structure

/// \~chinese
/// <summary>
/// 用于存储设备信息的结构体。
/// </summary>
/// \~english
/// <summary>
/// Device info structure.
/// </summary>
struct MPSizectorS_DeviceInfoStructType
{
	/// \~chinese
	/// <summary>
	///设备名称.
	/// </summary>
	/// \~english
	/// <summary>
	///Device name.
	/// </summary>
	wchar_t DeviceName[MPSIZECTORS_PRODUCT_NAME_MAX_LEN];

	/// \~chinese
	/// <summary>
	///设备序列号。该序列号为设备的惟一序列号。
	/// </summary>
	/// \~english
	/// <summary>
	///Unique serial number for the device.
	/// </summary>
	wchar_t DeviceSerialNumber[MPSIZECTORS_PRODUCT_SERIAL_NUMBER_MAX_LEN];

	/// \~chinese
	/// <summary>
	///设备的激活状态 
	/// </summary>
	/// \~english
	/// <summary>
	///Activation state of device
	/// </summary>
	bool IsActivated;

	/// \~chinese
	/// <summary>
	///设备的固件版本号 
	/// </summary>
	/// \~english
	/// <summary>
	///Version of device firmware
	/// </summary>
	float HWVersion;

	/// \~chinese
	/// <summary>
	///设备的硬件版本号 
	/// </summary>
	/// \~english
	/// <summary>
	///Version of device hardware
	/// </summary>
	float FWVersion;

	/// \~chinese
	/// <summary>
	///设备所需要的最低SDK版本
	/// </summary>
	/// \~english
	/// <summary>
	///The minimum version required by device
	/// </summary>
	float MinimumSDKVersion;

	/// \~chinese
	/// <summary>
	///设备的X方向像素分辨率
	/// </summary>
	/// \~english
	/// <summary>
	///The pixel resolution of X direction
	/// </summary>
	unsigned int SensorWidth;

	/// \~chinese
	/// <summary>
	///设备的Y方向像素分辨率
	/// </summary>
	/// \~english
	/// <summary>
	///The pixel resolution of Y direction
	/// </summary>
	unsigned int SensorHeight;

	/// \~chinese
	/// <summary>
	///设备的像素分辨率
	/// </summary>
	/// \~english
	/// <summary>
	///The pixel resolution of device
	/// </summary>
	unsigned int SensorResolution;

	/// \~chinese
	/// <summary>
	///设备是否支持低分辨率模式
	/// </summary>
	/// \~english
	/// <summary>
	///Whether the device support low resolution mode.
	/// </summary>
	bool BinningPossibility;

	/// \~chinese
	/// <summary>
	///设备的X方向像素分辨率(低分辨率模式)
	/// </summary>
	/// \~english
	/// <summary>
	///The pixel resolution of X direction (Low resolution mode)
	/// </summary>
	unsigned int SensorBinningWidth;

	/// \~chinese
	/// <summary>
	///设备的Y方向像素分辨率(低分辨率模式)
	/// </summary>
	/// \~english
	/// <summary>
	///The pixel resolution of Y direction(Low resolution mode)
	/// </summary>
	unsigned int SensorBinningHeight;

	/// \~chinese
	/// <summary>
	///设备的像素分辨率(低分辨率模式)
	/// </summary>
	/// \~english
	/// <summary>
	///The pixel resolution of device(Low resolution mode)
	/// </summary>
	unsigned int SensorBinningResolution;

	/// \~chinese
	/// <summary>
	///设备的X方向物理坐标最大值(mm)
	/// </summary>
	/// \~english
	/// <summary>
	///The maximum X coordinate value of device, in mm.
	/// </summary>
	float XMax;

	/// \~chinese
	/// <summary>
	///设备的Y方向物理坐标最大值(mm)
	/// </summary>
	/// \~english
	/// <summary>
	///The maximum Y coordinate value of device, in mm.
	/// </summary>
	float YMax;

	/// \~chinese
	/// <summary>
	///设备的Z方向物理坐标最大值(mm)
	/// </summary>
	/// \~english
	/// <summary>
	///The maximum Z coordinate value of device, in mm.
	/// </summary>
	float ZMax;

	/// \~chinese
	/// <summary>
	///设备连接接口。
	/// </summary>
	/// \~english
	/// <summary>
	///Device interface type.
	/// </summary>
	MPSizectorS_InterfaceType InterfaceType;

};

////Device Setting Structures

/// \~chinese
/// <summary>
/// 旋转平移矩阵结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of RT matrix.
/// </summary>
struct MPSizectorS_RTMatrixStructType
{
	
	/// \~chinese
	/// <summary>
	/// 旋转矩阵00。
	/// </summary>
	/// \~english
	/// <summary>
    /// Rotation 00.
	/// </summary>
	float R00;
	
	/// \~chinese
	/// <summary>
	/// 旋转矩阵01。
	/// </summary>
	/// \~english
	/// <summary>
    /// Rotation 01.
	/// </summary>
	float R01;
	
	/// \~chinese
	/// <summary>
	/// 旋转矩阵02。
	/// </summary>
	/// \~english
	/// <summary>
    /// Rotation 02.
	/// </summary>
	float R02;
	
	/// \~chinese
	/// <summary>
	/// 旋转矩阵10。
	/// </summary>
	/// \~english
	/// <summary>
    /// Rotation 10.
	/// </summary>
	float R10;
	
	/// \~chinese
	/// <summary>
	/// 旋转矩阵11。
	/// </summary>
	/// \~english
	/// <summary>
    /// Rotation 11.
	/// </summary>
	float R11;
	
	/// \~chinese
	/// <summary>
	/// 旋转矩阵12。
	/// </summary>
	/// \~english
	/// <summary>
    /// Rotation 12.
	/// </summary>
	float R12;
	
	/// \~chinese
	/// <summary>
	/// 旋转矩阵20。
	/// </summary>
	/// \~english
	/// <summary>
    /// Rotation 20.
	/// </summary>
	float R20;
	
	/// \~chinese
	/// <summary>
	/// 旋转矩阵21。
	/// </summary>
	/// \~english
	/// <summary>
    /// Rotation 21.
	/// </summary>
	float R21;
	
	/// \~chinese
	/// <summary>
	/// 旋转矩阵22。
	/// </summary>
	/// \~english
	/// <summary>
    /// Rotation 22.
	/// </summary>
	float R22;
	
	/// \~chinese
	/// <summary>
	/// 平移矩阵0。
	/// </summary>
	/// \~english
	/// <summary>
    /// Transfer 0.
	/// </summary>
	float T0;
	
	/// \~chinese
	/// <summary>
	/// 平移矩阵1。
	/// </summary>
	/// \~english
	/// <summary>
    /// Transfer 1.
	/// </summary>
	float T1;
	
	/// \~chinese
	/// <summary>
	/// 平移矩阵2。
	/// </summary>
	/// \~english
	/// <summary>
    /// Transfer 2.
	/// </summary>
	float T2;
};

/// \~chinese
/// <summary>
/// 定点数映射设置结构体。用于在浮点数和定点数点云之间转换。\n
/// 例：浮点数和定点数格式的X值关系如下：XFloat = XIncrement * XFixedPoint + X0Pos
/// </summary>
/// \~english
/// <summary>
/// Structure of point scale setting. Used to convert between float point cloud and fixed point cloud format.\n
/// e.g., relationship between float and fixed point X value: XFloat = XIncrement * XFixedPoint + X0Pos
/// </summary>
struct MPSizectorS_PointScaleSettingStructType
{
	
	/// \~chinese
	/// <summary>
	/// 当定点数数据为0时，所表示的X轴坐标值。
	/// </summary>
	/// \~english
	/// <summary>
    /// Coordinate value for X fixed point data = 0.
	/// </summary>
	float X0Pos;
	
	/// \~chinese
	/// <summary>
	/// 当定点数数据增加1时，所表示的X轴坐标值的增量。
	/// </summary>
	/// \~english
	/// <summary>
    /// Value increment for X. 
	/// </summary>
	float XIncrement;
	
	/// \~chinese
	/// <summary>
	/// 保留。
	/// </summary>
	/// \~english
	/// <summary>
    /// Reserved.
	/// </summary>
	float XReserved;
	
	/// \~chinese
	/// <summary>
	/// 当定点数数据为0时，所表示的Y轴坐标值。
	/// </summary>
	/// \~english
	/// <summary>
    /// Coordinate value for Y fixed point data = 0.
	/// </summary>
	float Y0Pos;
	
	/// \~chinese
	/// <summary>
	/// 当定点数数据增加1时，所表示的Y轴坐标值的增量。
	/// </summary>
	/// \~english
	/// <summary>
    /// Value increment for Y. 
	/// </summary>
	float YIncrement;
	
	/// \~chinese
	/// <summary>
	/// 保留。
	/// </summary>
	/// \~english
	/// <summary>
    /// Reserved.
	/// </summary>
	float YReserved;
	
	/// \~chinese
	/// <summary>
	/// 当定点数数据为0时，所表示的Z轴坐标值。
	/// </summary>
	/// \~english
	/// <summary>
    /// Coordinate value for Z fixed point data = 0.
	/// </summary>
	float Z0Pos;
	
	/// \~chinese
	/// <summary>
	/// 当定点数数据增加1时，所表示的Z轴坐标值的增量。
	/// </summary>
	/// \~english
	/// <summary>
    /// Value increment for Z. 
	/// </summary>
	float ZIncrement;
};

/// \~chinese
/// <summary>
/// 由用户指定的范围检查设置结构体。包含了X, Y, Z轴的有效范围信息。
/// </summary>
/// \~english
/// <summary>
/// Structure of user defined range check setting. Contains the valid range value of X, Y, Z.
/// </summary>
struct MPSizectorS_RangeCheckSettingStructType
{
	
	/// \~chinese
	/// <summary>
	/// X轴最大值。
	/// </summary>
	/// \~english
	/// <summary>
    /// X max value.
	/// </summary>
	float UXmax;
	
	/// \~chinese
	/// <summary>
	/// X轴最小值。
	/// </summary>
	/// \~english
	/// <summary>
    /// X min value.
	/// </summary>
	float UXmin;
	
	/// \~chinese
	/// <summary>
	/// Y轴最大值。
	/// </summary>
	/// \~english
	/// <summary>
    /// Y max value.
	/// </summary>
	float UYmax;
	
	/// \~chinese
	/// <summary>
	/// Y轴最小值。
	/// </summary>
	/// \~english
	/// <summary>
    /// Y min value.
	/// </summary>
	float UYmin;
	
	/// \~chinese
	/// <summary>
	/// Z轴最大值。
	/// </summary>
	/// \~english
	/// <summary>
    /// Z max value.
	/// </summary>
	float UZmax;
	
	/// \~chinese
	/// <summary>
	/// Z轴最小值。
	/// </summary>
	/// \~english
	/// <summary>
    /// Z min value.
	/// </summary>
	float UZmin;
};

/// \~chinese
/// <summary>
/// 输出引脚设置结构体（单个PIN脚的设置）。
/// </summary>
/// \~english
/// <summary>
/// Structure of output pin setting (for one pin).
/// </summary>
struct MPSizectorS_OutputPinSettingStructType
{
	
	/// \~chinese
	/// <summary>
	/// 输出引脚模式。
	/// </summary>
	/// \~english
	/// <summary>
    /// Output pin mode.
	/// </summary>
	MPSizectorS_OutputPinModeType PinMode;
	
	/// \~chinese
	/// <summary>
	/// 特殊功能输出信号的极性是否反转。
	/// </summary>
	/// \~english
	/// <summary>
    /// Polarity of special function output signal. true to reverse the polarity.
	/// </summary>
	bool IsReversedForSpecialFunction;
};

/// \~chinese
/// <summary>
/// 硬件触发设置结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of hardware trigger setting.
/// </summary>
struct MPSizectorS_HWTriggerSettingStructType
{
	
	/// \~chinese
	/// <summary>
	/// 硬件触发的信号极性是否反转。值为true时上升沿触发，值为false时下降沿触发。
	/// </summary>
	/// \~english
	/// <summary>
    /// Polarity of HW trigger. false for triggered as rising edge. true for trigger as dropping edge.
	/// </summary>
	bool IsReversed;
	
	/// \~chinese
	/// <summary>
	/// 硬件触发的延迟时间，以100us为单位。
	/// </summary>
	/// \~english
	/// <summary>
    /// Delay for trigger in unit of 100us.
	/// </summary>
	unsigned short DelayIn100us;
};

/// \~chinese
/// <summary>
/// 温度反馈信息结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of temperature feed back information.
/// </summary>
struct MPSizectorS_TemperatureFeedbackStructType
{
	
	/// \~chinese
	/// <summary>
	/// 温度传感器的有效状态。值为true时传感器有效，值为false时传感器无效。
	/// </summary>
	/// \~english
	/// <summary>
    /// State of the sensor. If the sensor does not exist or can not access, value is false.
	/// </summary>
	bool SensorValid;
	
	/// \~chinese
	/// <summary>
	/// 温度读数，以摄氏度为单位。
	/// </summary>
	/// \~english
	/// <summary>
    /// Temperature reading in Celsius.
	/// </summary>
	signed char TempValueC;
	
	/// \~chinese
	/// <summary>
	/// 温度状态判断。指示该传感器的读数是否在范围之内。
	/// </summary>
	/// \~english
	/// <summary>
    /// State judgement. Indicates the temperature is in range or not.
	/// </summary>
	MPSizectorS_TemperatureFeedBackStateType State;
};

/// \~chinese
/// <summary>
/// TSN信息结构体。标示了一个有效的触发信号的信号来源，及其序列号。
/// </summary>
/// \~english
/// <summary>
/// TSN structure. Indicates the ID of a valid trigger signal: source of trigger, SN of trigger.
/// </summary>
struct MPSizectorS_TSNStructType
{
	
	/// \~chinese
	/// <summary>
	/// 触发信号来源。
	/// </summary>
	/// \~english
	/// <summary>
    /// Source of trigger.
	/// </summary>
	MPSizectorS_TSNSourceType Source;
	
	/// \~chinese
	/// <summary>
	/// 触发信号的序列号。
	/// </summary>
	/// \~english
	/// <summary>
    /// Serial number of trigger.
	/// </summary>
	unsigned int SN;
};

/// \~chinese
/// <summary>
/// 基础设置结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of basic setting
/// </summary>
struct MPSizectorS_BasicSettingsStructType
{
	
	/// \~chinese
	/// <summary>
	/// 工作模式。
	/// </summary>
	/// \~english
	/// <summary>
    /// Working mode.
	/// </summary>
	MPSizectorS_WorkingModeType WorkingMode;
	
	/// \~chinese
	/// <summary>
	/// 暂停状态。为true时，设备将忽略所有触发信号，不进入下一次拍摄。
	/// </summary>
	/// \~english
	/// <summary>
    /// Hold state. When hold state is true, device will not start a new capture (ignore all kinds of trigger).
	/// </summary>
	bool HoldState;
	
	/// \~chinese
	/// <summary>
	/// 像素合并状态。为true时，设备将工作在低分辨率模式（如果该设备具备此功能）。
	/// </summary>
	/// \~english
	/// <summary>
    /// Binning state. If binning state = 1, device will work under low resolution mode (if it is available).
	/// </summary>
	bool BinningState;
	
	/// \~chinese
	/// <summary>
	/// 触发源。
	/// </summary>
	/// \~english
	/// <summary>
    /// Trigger source.
	/// </summary>
	MPSizectorS_TriggerSourceType TriggerSource;
};

/// \~chinese
/// <summary>
/// 基础曝光设置。
/// </summary>
/// \~english
/// <summary>
/// Structure of exposure basic setting.
/// </summary>
struct MPSizectorS_ExposureBasicSettingStructType
{
	
	/// \~chinese
	/// <summary>
	/// 曝光模式，可在手动/自动HDR， 以及重复曝光模式之中切换。
	/// </summary>
	/// \~english
	/// <summary>
    /// Exposure mode, select between Manual/Auto HDR and repeat.
	/// </summary>
	MPSizectorS_ExposureModeType ExposureMode;
	
	/// \~chinese
	/// <summary>
	/// 曝光次数，有效值为1，2，3。
	/// </summary>
	/// \~english
	/// <summary>
    /// Exposure number. Valid value is 1, 2, 3.
	/// </summary>
	unsigned char ExposureNumber;
	
	/// \~chinese
	/// <summary>
	/// 自动HDR优先级，有效范围为[0, 7]。0表示以完整性为最高优先级，7表示以重复精度为最高优先级。
	/// </summary>
	/// \~english
	/// <summary>
    /// Auto HDR priority. Valid value range is [0, 7]. 0 for highest priority for completeness, 7 for highest priority for repeatability.
	/// </summary>
	unsigned char AutoHDRPriority;
	
	/// \~chinese
	/// <summary>
	/// 自动PHDR质量，有效范围为[0, 100]。0表示最低的质量要求，100表示最高的质量要求。
	/// </summary>
	/// \~english
	/// <summary>
    /// Auto PHDR quality. Valid value range is [0, 100]. 0 for lowest quality threshold, 100 for highest quality threshold.
	/// </summary>
	unsigned char AutoPHDRQuality;
};

/// \~chinese
/// <summary>
/// 曝光设置结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of exposure setting.
/// </summary>
struct MPSizectorS_ExposureSettingsStructType
{
	
	/// \~chinese
	/// <summary>
	/// 基础曝光设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// Basic exposure setting.
	/// </summary>
	MPSizectorS_ExposureBasicSettingStructType ExposureBasicSetting;
	
	/// \~chinese
	/// <summary>
	/// 用户增益（仅对3D有效）。有效范围为[0, 3]。更高的用户增益将缩短曝光时间，但降低重复精度。
	/// </summary>
	/// \~english
	/// <summary>
    /// User gain (only for 3D mode). Valid value range is [0, 3]. Higher gain value will result shorter exposure time, but worse repeatability.
	/// </summary>
	unsigned char UserGain;
	
	/// \~chinese
	/// <summary>
	/// 3D工作模式的第1曝光强度，有效范围为[0.1, 100]。
	/// </summary>
	/// \~english
	/// <summary>
    /// 1st exposure intensity for 3D mode. Valid value range is [0.1, 100].
	/// </summary>
	float ExposureIntensity3D_1st;
	
	/// \~chinese
	/// <summary>
	/// 3D工作模式的第2曝光强度，有效范围为[0.1, 100]。
	/// </summary>
	/// \~english
	/// <summary>
    /// 2nd exposure intensity for 3D mode. Valid value range is [0.1, 100].
	/// </summary>
	float ExposureIntensity3D_2nd;
	
	/// \~chinese
	/// <summary>
	/// 3D工作模式的第3曝光强度，有效范围为[0.1, 100]。
	/// </summary>
	/// \~english
	/// <summary>
    /// 3rd exposure intensity for 3D mode. Valid value range is [0.1, 100].
	/// </summary>
	float ExposureIntensity3D_3rd;
	
	/// \~chinese
	/// <summary>
	/// 2D工作模式及3D模式下灰度图像的曝光强度，有效范围为[0.1, 100]。
	/// </summary>
	/// \~english
	/// <summary>
    /// Exposure intensity for 2D mode (except exposure prediction) and 3D mode gray image.
	/// </summary>
	float ExposureIntensity2D;
};

/// \~chinese
/// <summary>
/// 重构设置结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of reconstruction setting.
/// </summary>
struct MPSizectorS_ReconstructionSettingsStructType
{
	
	/// \~chinese
	/// <summary>
	/// 过曝滤除阈值，有效范围为[0, 16]和254。\n
	/// 值为0时，允许任何程度的过曝，不剔除任何过曝点。\n
	/// 值为16时，不允许任何成都的过曝，剔除所有过曝点。\n
	/// 值为254时，设备根据不同的3D工作模式，自动设置过曝滤除阈值。
	/// </summary>
	/// \~english
	/// <summary>
    /// Over exposure filter threshold. Valid value is [0, 16] and 254. \n
	/// Value 0 results all over-exposured pixels are still reconstructed. \n
	/// Value 16 results all over-exposured pixels are marked as invalid point.\n
	/// Value 254 results a auto-decided threshold for different 3D working modes.
	/// </summary>
	unsigned char OverExposureFilterThreshold;
	
	/// \~chinese
	/// <summary>
	/// 有效点阈值0。有效范围为[0, 100]。0为最宽松，100为最严格。
	/// </summary>
	/// \~english
	/// <summary>
    /// Valid point threshold 0. Valid value is [0, 100]. 0 for most loosest, 100 for tightest.
	/// </summary>
	unsigned char ValidPointThreshold0;
	
	/// \~chinese
	/// <summary>
	/// 有效点阈值1。有效范围为[0, 100]。0为最宽松，100为最严格。
	/// </summary>
	/// \~english
	/// <summary>
    /// Valid point threshold 1. Valid value is [0, 100]. 0 for most loosest, 100 for tightest.
	/// </summary>
	unsigned char ValidPointThreshold1;
	
	/// \~chinese
	/// <summary>
	/// 飞点剔除阈值0。有效范围为[0, 100]。0为最宽松，100为最严格。
	/// </summary>
	/// \~english
	/// <summary>
    /// Burr filter threshold 0. Valid value is [0, 100]. 0 for most loosest, 100 for tightest.
	/// </summary>
	unsigned char BurrFilterThreshold0;
	
	/// \~chinese
	/// <summary>
	/// 飞点剔除阈值1。有效范围为[0, 100]。0为最宽松，100为最严格。
	/// </summary>
	/// \~english
	/// <summary>
    /// Burr filter threshold 1. Valid value is [0, 100]. 0 for most loosest, 100 for tightest.
	/// </summary>
	unsigned char BurrFilterThreshold1;
	
	/// \~chinese
	/// <summary>
	/// 预处理迭代次数。有效范围为[0, 5]。设置为0时，预处理功能关闭。更高的迭代次数将带来更平滑的表面，但损失更多图像细节。
	/// </summary>
	/// \~english
	/// <summary>
    /// Pre-process loop number. Valid value is [0, 5]. 0 for pre-process function disabled. Higher loop number will result a smoother surface, but loosing more details.
	/// </summary>
	unsigned char PreProcessLoopNum;
	
	/// \~chinese
	/// <summary>
	/// 预处理阈值。有效范围为[0, 100]。更大的值将更大程度地减少预处理对台阶边缘的变形。
	/// </summary>
	/// \~english
	/// <summary>
    /// Pre-process threshod. Valid value is [0, 100]. Higher value results less deformation at the edge.
	/// </summary>
	unsigned char PreProcessThreshold;
};

/// \~chinese
/// <summary>
/// 后处理设置结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of post-process setting.
/// </summary>
struct MPSizectorS_PostProcessSettingsStructType
{
	
	/// \~chinese
	/// <summary>
	/// 3D数据输出模式。
	/// </summary>
	/// \~english
	/// <summary>
    /// 3D data output mode.
	/// </summary>
	MPSizectorS_DataOutModeType DataOutMode;
	
	/// \~chinese
	/// <summary>
	/// 用户旋转平移矩阵的使能状态。
	/// </summary>
	/// \~english
	/// <summary>
    /// Enable state of user RT matrix.
	/// </summary>
	bool UserRTMatrixEnableState;
	
	/// \~chinese
	/// <summary>
	/// 用户旋转平移矩阵。
	/// </summary>
	/// \~english
	/// <summary>
    /// User RT matrix.
	/// </summary>
	MPSizectorS_RTMatrixStructType UserRTMatrix;
	
	/// \~chinese
	/// <summary>
	/// 定点数映射设置。用于在浮点数和定点数3D格式之间转换。
	/// </summary>
	/// \~english
	/// <summary>
    /// Point scale setting, applied when generating fixed point cloud.
	/// </summary>
	MPSizectorS_PointScaleSettingStructType PointScaleSetting;
	
	/// \~chinese
	/// <summary>
	/// 范围检查功能的使能状态。
	/// </summary>
	/// \~english
	/// <summary>
    /// Enable state of range check function.
	/// </summary>
	bool RangeCheckEnableState;
	
	/// \~chinese
	/// <summary>
	/// 范围检查功能的设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// Range check setting.
	/// </summary>
	MPSizectorS_RangeCheckSettingStructType RangeCheckSetting;
};

/// \~chinese
/// <summary>
/// IO设置结构个体
/// </summary>
/// \~english
/// <summary>
/// Structure of IO settings.
/// </summary>
struct MPSizectorS_IOSettingsStructType
{
	
	/// \~chinese
	/// <summary>
	/// 硬件输出引脚的寄存器值。每个Bit表示一个Pin
	/// </summary>
	/// \~english
	/// <summary>
    /// Value register of output pin. Bitwise represented.
	/// </summary>
	unsigned char EXTIOOutput;
	
	/// \~chinese
	/// <summary>
	/// 输出引脚0的设置
	/// </summary>
	/// \~english
	/// <summary>
    /// Output pin setting for pin 0.
	/// </summary>
	MPSizectorS_OutputPinSettingStructType EXTIOO0Setting;
	
	/// \~chinese
	/// <summary>
	/// 输出引脚1的设置
	/// </summary>
	/// \~english
	/// <summary>
    /// Output pin setting for pin 1.
	/// </summary>
	MPSizectorS_OutputPinSettingStructType EXTIOO1Setting;
	
	/// \~chinese
	/// <summary>
	/// 硬件触发设置
	/// </summary>
	/// \~english
	/// <summary>
    /// Hardware trigger setting.
	/// </summary>
	MPSizectorS_HWTriggerSettingStructType HWTriggerSeting;
};

/// \~chinese
/// <summary>
/// 通用设置结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of general setting.
/// </summary>
struct MPSizectorS_GeneralSettingsStructType
{
	
	/// \~chinese
	/// <summary>
	/// 自动休眠功能的使能状态。值为true时，设备会在闲置指定时间后自动进入休眠状态，并且在触发信号到来时自动苏醒。
	/// </summary>
	/// \~english
	/// <summary>
    /// Enable state of auto-sleep function. When true, the device will enter sleep mode after a certain idle time, and automatically wake-up when a trigger signal is comming.
	/// </summary>
	bool AutoSleepEnableState;
	
	/// \~chinese
	/// <summary>
	/// 进入休眠状态的延时，单位为ms。
	/// </summary>
	/// \~english
	/// <summary>
    /// Time period threshold for entering sleep mode, in ms.
	/// </summary>
	unsigned short AutoSleepDelayMS;
};

/// \~chinese
/// <summary>
/// 所有设置的结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of all the settings.
/// </summary>
struct MPSizectorS_SettingsStructType
{
	
	/// \~chinese
	/// <summary>
	/// 基础设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// Basic settings.
	/// </summary>
	MPSizectorS_BasicSettingsStructType BasicSetings;
	
	/// \~chinese
	/// <summary>
	/// 曝光设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// Exposure settings.
	/// </summary>
	MPSizectorS_ExposureSettingsStructType ExposureSettings;
	
	/// \~chinese
	/// <summary>
	/// 重构设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// Reconstruction settings.
	/// </summary>
	MPSizectorS_ReconstructionSettingsStructType ReconstructionSettings;
	
	/// \~chinese
	/// <summary>
	/// 后处理设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// Post-process settings.
	/// </summary>
	MPSizectorS_PostProcessSettingsStructType PostProcessSettings;
	
	/// \~chinese
	/// <summary>
	/// IO设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// IO settings.
	/// </summary>
	MPSizectorS_IOSettingsStructType IOSettings;
	
	/// \~chinese
	/// <summary>
	/// 通用设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// General settings.
	/// </summary>
	MPSizectorS_GeneralSettingsStructType GeneralSettings;
};

/// \~chinese
/// <summary>
/// 所有设备状态信息的结构体
/// </summary>
/// \~english
/// <summary>
/// Structure of full device state information.
/// </summary>
struct MPSizectorS_StatesStructType
{
	
	/// \~chinese
	/// <summary>
	/// 输入引脚寄存器值，每一个bit表示一个引脚。
	/// </summary>
	/// \~english
	/// <summary>
    /// Input pin register value. Bitwise represented.
	/// </summary>
	unsigned char EXTIOInput;
	
	/// \~chinese
	/// <summary>
	/// 核心温度传感器的反馈信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Core temperature sensor feedback.
	/// </summary>
	MPSizectorS_TemperatureFeedbackStructType TempCore;
	
	/// \~chinese
	/// <summary>
	/// 温度传感器0的反馈信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Temprature sensor 0 feedback.
	/// </summary>
	MPSizectorS_TemperatureFeedbackStructType Temp0;
	
	/// \~chinese
	/// <summary>
	/// 温度传感器1的反馈信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Temprature sensor 1 feedback.
	/// </summary>
	MPSizectorS_TemperatureFeedbackStructType Temp1;
	
	/// \~chinese
	/// <summary>
	/// 温度传感器2的反馈信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Temprature sensor 2 feedback.
	/// </summary>
	MPSizectorS_TemperatureFeedbackStructType Temp2;
	
	/// \~chinese
	/// <summary>
	/// 设备启动时间，单位为ms。
	/// </summary>
	/// \~english
	/// <summary>
    /// Device start-up time in ms.
	/// </summary>
	unsigned int StartUpTimeMS;
	
	/// \~chinese
	/// <summary>
	/// 设备连接时间，单位为ms。
	/// </summary>
	/// \~english
	/// <summary>
    /// Device connected time in ms.
	/// </summary>
	unsigned int ConnectionTimeMS;
	
	/// \~chinese
	/// <summary>
	/// 设备拍摄计数，包括2D拍摄与3D拍摄。
	/// </summary>
	/// \~english
	/// <summary>
    /// Device snap counter (include 2D and 3D).
	/// </summary>
	unsigned int SnapCnt;
	
	/// \~chinese
	/// <summary>
	/// 传输重试总计数。
	/// </summary>
	/// \~english
	/// <summary>
    /// Total transfer retry counter.
	/// </summary>
	unsigned short TotalTransferRetryNum;
	
	/// \~chinese
	/// <summary>
	/// 当前帧的传输重试计数。
	/// </summary>
	/// \~english
	/// <summary>
    /// Current frame transfer retry counter.
	/// </summary>
	unsigned short CurrentTransferRetryNum;
	
	/// \~chinese
	/// <summary>
	/// 拍摄重试总计数。
	/// </summary>
	/// \~english
	/// <summary>
    /// Total capture retry number.
	/// </summary>
	unsigned short TotalCaptureRetryNum;
	
	/// \~chinese
	/// <summary>
	/// 当前正在执行拍摄或传输的TSN。若处于空闲状态，则是最后一次拍摄的TSN。
	/// </summary>
	/// \~english
	/// <summary>
    /// Current executing frame TSN. Under idle state, it is last frame TSN.
	/// </summary>
	MPSizectorS_TSNStructType CurrentTSN;
	
	/// \~chinese
	/// <summary>
	/// 最后一次由软件触发的TSN。
	/// </summary>
	/// \~english
	/// <summary>
    /// Latest TSN triggered by software trigger.
	/// </summary>
	MPSizectorS_TSNStructType SoftwareTSN;
	
	/// \~chinese
	/// <summary>
	/// 最后一次连续拍摄时自动触发的TSN。
	/// </summary>
	/// \~english
	/// <summary>
    /// Latest TSN triggered by keep running trigger.
	/// </summary>
	MPSizectorS_TSNStructType AutoTSN;
	
	/// \~chinese
	/// <summary>
	/// 最后一次硬件触发的TSN。
	/// </summary>
	/// \~english
	/// <summary>
    /// Lastest TSN triggered by hardware trigger.
	/// </summary>
	MPSizectorS_TSNStructType HardwareTSN;
	
	/// \~chinese
	/// <summary>
	/// 制造商调试用途的寄存器。
	/// </summary>
	/// \~english
	/// <summary>
    /// Vender debug purpose registers.
	/// </summary>
	unsigned int DebugRegisters[MPSIZECTORS_DEBUG_STATES_SIZE];
};


////Head Pack Structures

/// \~chinese
/// <summary>
/// 数据信息结构体，在head pack中使用。
/// </summary>
/// \~english
/// <summary>
/// Data info structure, used in head pack.
/// </summary>
struct MPSizectorS_HeadPackDataInfoStructType
{
	
	/// \~chinese
	/// <summary>
	/// 数据格式。
	/// </summary>
	/// \~english
	/// <summary>
    /// Format of data.
	/// </summary>
	MPSizectorS_DataFormatType DataFormat;
	
	/// \~chinese
	/// <summary>
	/// 在此数据帧中包含的图像数量。对于3D数据帧，0表示仅包含1幅3D信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Data number included in this frame. For 3D frame, 0 means 1. 
	/// </summary>
	unsigned char DataNumber;
	
	/// \~chinese
	/// <summary>
	/// 数据标签。该变量由客户设置，用于在触发时标记不同的拍摄目的，并在回调中识别。
	/// </summary>
	/// \~english
	/// <summary>
    /// Data tag. This variable is set by user to mark frame captured for different purpose, and identify them at callback. 
	/// </summary>
	unsigned short DataTag;
	
	/// \~chinese
	/// <summary>
	/// X像素分辨率
	/// </summary>
	/// \~english
	/// <summary>
    /// X direction pixel resolution.
	/// </summary>
	unsigned short XPixResolution;
	
	/// \~chinese
	/// <summary>
	/// Y像素分辨率
	/// </summary>
	/// \~english
	/// <summary>
    /// Y direction pixel resolution.
	/// </summary>
	unsigned short YPixResolution;
	
	/// \~chinese
	/// <summary>
	/// 设备收到触发信号瞬间的时间戳，时间通过设备启动时间表示。
	/// </summary>
	/// \~english
	/// <summary>
    /// Time stemp at the moment trigger signal is recieved. Time counted in device start-up time.
	/// </summary>
	unsigned int DeviceTimeStamp;
	
	/// \~chinese
	/// <summary>
	/// PC收到完整的数据帧的时间戳。
	/// </summary>
	/// \~english
	/// <summary>
    /// The moment PC recieved the complete frame.
	/// </summary>
	time_t PCTimeStamp;
	
	/// \~chinese
	/// <summary>
	/// 当前数据的TSN。
	/// </summary>
	/// \~english
	/// <summary>
    /// TSN of current data.
	/// </summary>
	MPSizectorS_TSNStructType TSN;
};

/// \~chinese
/// <summary>
/// 自动HDR的计算结果反馈结构体。该结构体的信息由设备产生，并通过head pack发回至用户端。
/// </summary>
/// \~english
/// <summary>
/// Structure of Auto HDR calculation result. This structure is generated by device and sent to user through head pack.
/// </summary>
struct MPSizectorS_AutoHDRResultStructType
{
	
	/// \~chinese
	/// <summary>
	/// 自动HDR结果是否被运用到当前拍摄。
	/// </summary>
	/// \~english
	/// <summary>
    /// Is the Auto HDR result applied fo capture or not.
	/// </summary>
	bool IsUsingAutoHDRResult;
	
	/// \~chinese
	/// <summary>
	/// 曝光次数。提示了下列第1，2，3曝光强度的有效状态。当处于自动PHDR模式时，该值也是由设备自主产生。
	/// </summary>
	/// \~english
	/// <summary>
    /// Number of exposures. Indicating the valid state of following 1st, 2nd, 3rd exposure intensity. It is calculated result under Auto PHDR mode。
	/// </summary>
	unsigned char ExposureNum;
	
	/// \~chinese
	/// <summary>
	/// 自动HDR得到的第1曝光强度，有效范围为[0, 100]。
	/// </summary>
	/// \~english
	/// <summary>
    /// 1st exposure intensity calculated by Auto HDR. Valid value is [0, 100].
	/// </summary>
	float AutoHDR_ExposureIntensity3D_1st;
	
	/// \~chinese
	/// <summary>
	/// 自动HDR得到的第2曝光强度，有效范围为[0, 100]。
	/// </summary>
	/// \~english
	/// <summary>
    /// 2nd exposure intensity calculated by Auto HDR. Valid value is [0, 100].
	/// </summary>
	float AutoHDR_ExposureIntensity3D_2nd;
	
	/// \~chinese
	/// <summary>
	/// 自动HDR得到的第3曝光强度，有效范围为[0, 100]。
	/// </summary>
	/// \~english
	/// <summary>
    /// 3rd exposure intensity calculated by Auto HDR. Valid value is [0, 100].
	/// </summary>
	float AutoHDR_ExposureIntensity3D_3rd;
	
	/// \~chinese
	/// <summary>
	/// 自动HDR得到的曝光设置的预估得分。有效范围为[0, 100]。
	/// </summary>
	/// \~english
	/// <summary>
    /// Estimated score of the exposure configuration given by Auto HDR. Valid value is [0, 100].
	/// </summary>
	unsigned char Score;
};

/// \~chinese
/// <summary>
/// 调试信息结构体，由设备产生并通过head pack发送至PC。该结构体是StatesStructType的简略版本。
/// </summary>
/// \~english
/// <summary>
/// Debug info structure generated by device and sent to PC through head pack. This is a compact version of StatesStructType.
/// </summary>
struct MPSizectorS_HeadDebugInfoStructType
{
	
	/// \~chinese
	/// <summary>
	/// 设备连接时间，单位为ms。
	/// </summary>
	/// \~english
	/// <summary>
    /// Device connected time in ms.
	/// </summary>
	unsigned int ConnectionTimeMS;
	
	/// \~chinese
	/// <summary>
	/// 设备拍摄计数，包括2D拍摄与3D拍摄。
	/// </summary>
	/// \~english
	/// <summary>
    /// Device snap counter (include 2D and 3D).
	/// </summary>
	unsigned int SnapCnt;
	
	/// \~chinese
	/// <summary>
	/// 传输重试总次数。
	/// </summary>
	/// \~english
	/// <summary>
    /// Total transfer retry counter.
	/// </summary>
	unsigned short TotalTransferRetryNum;
	
	/// \~chinese
	/// <summary>
	/// 当前帧的传输重试次数。
	/// </summary>
	/// \~english
	/// <summary>
    /// Current frame transfer retry counter.
	/// </summary>
	unsigned short CurrentTransferRetryNum;
	
	/// \~chinese
	/// <summary>
	/// 拍摄重试总计数。
	/// </summary>
	/// \~english
	/// <summary>
    /// Total capture retry number.
	/// </summary>
	unsigned short TotalCaptureRetryNum;
	
	/// \~chinese
	/// <summary>
	/// 核心温度传感器的反馈信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Core temperature sensor feedback structure.
	/// </summary>
	MPSizectorS_TemperatureFeedbackStructType TempCore;
	
	/// \~chinese
	/// <summary>
	/// 温度传感器0的反馈信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Temprature sensor 0 feedback structure.
	/// </summary>
	MPSizectorS_TemperatureFeedbackStructType Temp0;
	
	/// \~chinese
	/// <summary>
	/// 温度传感器1的反馈信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Temprature sensor 1 feedback structure.
	/// </summary>
	MPSizectorS_TemperatureFeedbackStructType Temp1;
	
	/// \~chinese
	/// <summary>
	/// 温度传感器2的反馈信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Temprature sensor 2 feedback structure.
	/// </summary>
	MPSizectorS_TemperatureFeedbackStructType Temp2;
	
	/// \~chinese
	/// <summary>
	/// 设备初始化状态寄存器。\n
	/// byte 0: 0x00 表示正在初始化， 0x01 表示初始化完成且未进入睡眠模式。 0x02 表示正在睡眠模式。\n
	/// 其他字节为生产商预留的调试信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Init state register.\n
	/// byte 0: 0x00 for under init. 0x01 for init done and not in sleep mode. 0x02 for in sleep mode.\n
	/// other bytes: reserved for vender diagostics purpose.
	/// </summary>
	unsigned int InitStates;
	
	/// \~chinese
	/// <summary>
	/// 硬件输入引脚状态。由于head pack被频繁且规律地发送回PC，用户可以通过读取head pack中的该变量来刷新输入引脚状态，而不是直接读取寄存器。
	/// </summary>
	/// \~english
	/// <summary>
    /// Hardware input pin state. As the head pack is sent from device to PC regularly, user can refresh the hardware input pin value by reading it from head pack instead of reading register.
	/// </summary>
	unsigned char EXTIOInput;
};

/// \~chinese
/// <summary>
/// head pack结构体。它被频繁且规律地发送回PC，并且被包含在每一个数据帧之中。
/// </summary>
/// \~english
/// <summary>
/// Structure of head pack. It is regularly sent from device to PC, and also included in every data frame.
/// </summary>
struct MPSizectorS_HeadPackStructType
{
	/// \~chinese
	/// <summary>
	/// 设备信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Device Info
	/// </summary>
	MPSizectorS_DeviceInfoStructType DeviceInfo;

	/// \~chinese
	/// <summary>
	/// 数据信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Data Info
	/// </summary>
	MPSizectorS_HeadPackDataInfoStructType DataInfo;

	/// \~chinese
	/// <summary>
	/// 基础设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// Basic Settings
	/// </summary>
	MPSizectorS_BasicSettingsStructType BasicSettings;

	/// \~chinese
	/// <summary>
	/// 曝光设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// Exposure Settings
	/// </summary>
	MPSizectorS_ExposureSettingsStructType ExposureSettings;

	/// \~chinese
	/// <summary>
	/// 自动HDR结果。
	/// </summary>
	/// \~english
	/// <summary>
    /// Auto HDR Result
	/// </summary>
	MPSizectorS_AutoHDRResultStructType AutoHDRResult;

	/// \~chinese
	/// <summary>
	/// 重构设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// Recon Settings
	/// </summary>
	MPSizectorS_ReconstructionSettingsStructType ReconstructionSettings;

	/// \~chinese
	/// <summary>
	/// 后处理设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// Post Process Settings
	/// </summary>
	MPSizectorS_PostProcessSettingsStructType PostProcessSettings;

	/// \~chinese
	/// <summary>
	/// 通用设置。
	/// </summary>
	/// \~english
	/// <summary>
    /// General Settings
	/// </summary>
	MPSizectorS_GeneralSettingsStructType GeneralSetting;

	/// \~chinese
	/// <summary>
	/// 调试信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Debug Info
	/// </summary>
	MPSizectorS_HeadDebugInfoStructType DebugInfo;
};

////Data Structures

/// \~chinese
/// <summary>
/// 浮点数格式3D数据点结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of 3D data point in float format.
/// </summary>
struct MPSizectorS_DataPointFloat3DStruct
{
	/// \~chinese
	/// <summary>
	/// 像素灰度值。
	/// </summary>
	/// \~english
	/// <summary>
	/// Gray scale value of the point.
	/// </summary>
	unsigned char Gray;
	
	/// \~chinese
	/// <summary>
	/// 像素掩码值。\n
	/// 注意！相比于Sizector-H/HD, Mask的定义已经发生改变，继续使用 Mask == 0 来判断是否是有效点将导致错误！\n
	/// bit 0 至 bit 2: 有效状态掩码. 0x00为有效点。 0x01为过曝点。0x02为重构失败。0x03为超出用户设定范围（像素点被范围检查功能剔除）。0x04 为数据溢出 (转换至定点数的过程中，定点数的值超出 0~65535 的范围)。\n
	/// bit 3 至 bit 4: HDR掩码, 有效点最终采用的数据的曝光次数。例如，当HDR融合采用了3次曝光，最终采用了第二次曝光的结果作为该像素点的结果，则为2。\n
	/// bit 5 至 bit 7: HDR掩码, 各次曝光的有效状态。
	/// </summary>
	/// \~english
	/// <summary>
    /// Mask value of the point. \n\n
	/// Notice! The definition of mask has been changed compared to Sizector-H/HD! Using Mask == 0 to judge valid point will cause error! \n\n
	/// bit 0 to bit 2: valid mask. 0x00 for valid point, 0x01 for over-exposure. 0x02 for reconstruction failed. 0x03 for out of user range(points that filtered by range check function). 0x04 for data overflow (caused by converting to fixed-point data, and value is out of 0~65535).\n\n
	/// bit 3 to bit 4: HDR mask, exposure index of valid point. For example, when 3 exposures are taken for HDR fusion, and finally the value of exposure 2 is taken as the result, the exposure index of valid point is 2.\n\n
	/// bit 5 to bit 7: HDR mask, valid state of each exposure. 
	/// </summary>
	unsigned char Mask;
	
	/// \~chinese
	/// <summary>
	/// X 坐标，单位mm。
	/// </summary>
	/// \~english
	/// <summary>
	/// X coordinate in mm.
	/// </summary>
	float X;
	
	/// \~chinese
	/// <summary>
	/// Y 坐标，单位mm。
	/// </summary>
	/// \~english
	/// <summary>
	/// Y coordinate in mm. 
	/// </summary>
	float Y;
	
	/// \~chinese
	/// <summary>
	/// Z 坐标，单位mm。
	/// </summary>
	/// \~english
	/// <summary>
	///	Z coordinate in mm. 
	/// </summary>
	float Z;
};

/// \~chinese
/// <summary>
/// 浮点数格式的3D数据帧结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of 3D data frame in float point format
/// </summary>
struct MPSizectorS_DataFrameFloat3DStruct
{
	
	/// \~chinese
	/// <summary>
	/// 数据帧信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Frame information.
	/// </summary>
	MPSizectorS_HeadPackStructType FrameInfo;
	
	/// \~chinese
	/// <summary>
	/// 浮点数格式的点云数据。
	/// </summary>
	/// \~english
	/// <summary>
    /// Point cloud data in float point format.
	/// </summary>
	MPSizectorS_DataPointFloat3DStruct* Data;
};

/// \~chinese
/// <summary>
/// 定点数格式3D数据点结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of 3D data point in fixed point format. The data scale information is saved in the FrameInfo of data frame.
/// </summary>
struct MPSizectorS_DataPointFix3DStruct
{
	/// \~chinese
	/// <summary>
	/// 像素灰度值。
	/// </summary>
	/// \~english
	/// <summary>
	/// Gray scale value of the point.
	/// </summary>
	unsigned char Gray;
	
	/// \~chinese
	/// <summary>
	/// 像素掩码值。\n
	/// 注意！相比于Sizector-H/HD, Mask的定义已经发生改变，继续使用 Mask == 0 来判断是否是有效点将导致错误！\n
	/// bit 0 至 bit 2: 有效状态掩码. 0x00为有效点。 0x01为过曝点。0x02为重构失败。0x03为超出用户设定范围（像素点被范围检查功能剔除）。0x04 为数据溢出 (转换至定点数的过程中，定点数的值超出 0~65535 的范围)。\n
	/// bit 3 至 bit 4: HDR掩码, 有效点最终采用的数据的曝光次数。例如，当HDR融合采用了3次曝光，最终采用了第二次曝光的结果作为该像素点的结果，则为2。\n
	/// bit 5 至 bit 7: HDR掩码, 各次曝光的有效状态。
	/// </summary>
	/// \~english
	/// <summary>
    /// Mask value of the point. \n\n
	/// Notice! The definition of mask has been changed compared to Sizector-H/HD! Using Mask == 0 to judge valid point will cause error! \n\n
	/// bit 0 to bit 2: valid mask. 0x00 for valid point, 0x01 for over-exposure. 0x02 for reconstruction failed. 0x03 for out of user range(points that filtered by range check function). 0x04 for data overflow (caused by converting to fixed-point data, and value is out of 0~65535).\n\n
	/// bit 3 to bit 4: HDR mask, exposure index of valid point. For example, when 3 exposures are taken for HDR fusion, and finally the value of exposure 2 is taken as the result, the exposure index of valid point is 2.\n\n
	/// bit 5 to bit 7: HDR mask, valid state of each exposure. 
	/// </summary>
	unsigned char Mask;
	
	/// \~chinese
	/// <summary>
	/// 转换后的X值。 
	/// </summary>
	/// \~english
	/// <summary>
	/// Rescaled X value.
	/// </summary>
	unsigned short X;
	
	/// \~chinese
	/// <summary>
	/// 转换后的Y值。 
	/// </summary>
	/// \~english
	/// <summary>
	/// Rescaled Y value.
	/// </summary>
	unsigned short Y;
	
	/// \~chinese
	/// <summary>
	/// 转换后的Z值。 
	/// </summary>
	/// \~english
	/// <summary>
	/// Rescaled Z value.
	/// </summary>
	unsigned short Z;
};

/// \~chinese
/// <summary>
/// 定点数格式的3D数据帧结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of 3D data frame in fixed point format. 
/// </summary>
struct MPSizectorS_DataFrameFix3DStruct
{
	
	/// \~chinese
	/// <summary>
	/// 数据帧信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Frame information.
	/// </summary>
	MPSizectorS_HeadPackStructType FrameInfo;
	
	/// \~chinese
	/// <summary>
	/// 定点数格式的点云数据。
	/// </summary>
	/// \~english
	/// <summary>
    /// Point cloud data in fixed point format.
	/// </summary>
	MPSizectorS_DataPointFix3DStruct* Data;
};

/// \~chinese
/// <summary>
/// 2D数据帧结构体。
/// </summary>
/// \~english
/// <summary>
/// Structure of 2D data frame.
/// </summary>
struct MPSizectorS_DataFrame2DStruct
{
	
	/// \~chinese
	/// <summary>
	/// 数据帧信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Frame information.
	/// </summary>
	MPSizectorS_HeadPackStructType FrameInfo;
	
	/// \~chinese
	/// <summary>
	/// 灰度数据。
	/// </summary>
	/// \~english
	/// <summary>
    /// Gray scale data.
	/// </summary>
	unsigned char* Data;
};

/// \~chinese
/// <summary>
/// 未定义格式数据帧结构体。该类型为数据回调提供的唯一数据类型，它是一种中间数据格式，用于避免采用多个回调函数传递不同格式的数据。
/// </summary>
/// \~english
/// <summary>
/// Structure of undefined format data. This is the only data type delievered from callback. It is an intermediate data format to avoid using different callback functions to deliever different format of data.
/// </summary>
struct MPSizectorS_DataFrameUndefinedStruct
{
	
	/// \~chinese
	/// <summary>
	/// 数据帧信息。
	/// </summary>
	/// \~english
	/// <summary>
    /// Frame information.
	/// </summary>
	MPSizectorS_HeadPackStructType FrameInfo;
	
	/// \~chinese
	/// <summary>
	/// 数据。
	/// </summary>
	/// \~english
	/// <summary>
    /// Data.
	/// </summary>
	unsigned char* Data;
};

/// \~chinese
/// <summary>
/// 深度色谱范围设置。
/// </summary>
/// \~english
/// <summary>
/// Structure of color depth range setting.
/// </summary>
struct MPSizectorS_ColorDepthRangeStruct
{
	
	/// \~chinese
	/// <summary>
	/// 深度色谱下限。
	/// </summary>
	/// \~english
	/// <summary>
    /// Rang lower bound.
	/// </summary>
    float Min;
	
	/// \~chinese
	/// <summary>
	/// 深度色谱上限。
	/// </summary>
	/// \~english
	/// <summary>
    /// Range upper bound.
	/// </summary>
    float Max;
};

/// \~chinese
/// <summary>
/// 深度图像结构体, 数据以一维数组存储。任意像素点(i, j)对应三维坐标为：\n
/// X = XOffset + i * PixelInterval \n
/// Y = YOffset + j * PixelInterval \n
/// Z = ZOffset + RangeData[i + j * Width] * ZInterval = ZRawData[i + j * Width]
/// </summary>
/// \~english
/// <summary>
/// Range image struct, data is stored as 1-dimensional array. 3D coordinates of any pixel(i, j) is：\n
/// X = XOffset + i * PixelInterval \n
/// Y = YOffset + j * PixelInterval \n
/// Z = ZOffset + RangeData[i + j * Width] * ZInterval = ZRawData[i + j * Width]
/// </summary>
struct RangeImage
{
	/// \~chinese
	/// <summary>
	/// 高度数据数组指针(mm)。
	/// </summary>
	/// \~english
	/// <summary>
    /// Height data array, in mm.
	/// </summary>
	float* ZRawData;
	/// \~chinese
	/// <summary>
	/// 以unsigned short表示的高度数据数组指针(mm)。
	/// </summary>
	/// \~english
	/// <summary>
    /// Height data array stored as unsigned short type, in mm.
	/// </summary>
	unsigned short* RangeData;
	/// \~chinese
	/// <summary>
	/// 像素灰度值数值指针。
	/// </summary>
	/// \~english
	/// <summary>
    /// Gray scale value array.
	/// </summary>
	unsigned char* Textures;
	/// \~chinese
	/// <summary>
	/// 掩码数据指针，指示对应高度数据是否为有效值。
	/// </summary>
	/// \~english
	/// <summary>
    /// Pointer to the mask data, indicate whether the height data is valid.
	/// </summary>
	bool* Mask;
	/// \~chinese
	/// <summary>
	/// 图像的X方向像素长度。
	/// </summary>
	/// \~english
	/// <summary>
    /// The pixel resolution of X direction.
	/// </summary>
	unsigned int Width;
	/// \~chinese
	/// <summary>
	/// 图像的Y方向像素长度。
	/// </summary>
	/// \~english
	/// <summary>
    /// The pixel resolution of Y direction.
	/// </summary>
	unsigned int Height;
	/// \~chinese
	/// <summary>
	/// 图像的X方向偏移(mm)。
	/// </summary>
	/// \~english
	/// <summary>
    /// The offset of X direction, in mm.
	/// </summary>
	float XOffset;
	/// \~chinese
	/// <summary>
	/// 图像的Y方向偏移(mm)。
	/// </summary>
	/// \~english
	/// <summary>
    /// The offset of Y direction, in mm.
	/// </summary>
	float YOffset;
	/// \~chinese
	/// <summary>
	/// 图像的Z方向偏移(mm)。
	/// </summary>
	/// \~english
	/// <summary>
    /// The offset of Z direction, in mm.
	/// </summary>
	float ZOffset;
	/// \~chinese
	/// <summary>
	/// 图像的X和Y方向像素间隔(mm)。
	/// </summary>
	/// \~english
	/// <summary>
    /// The pixel interval of X and Y direction, in mm.
	/// </summary>
	float PixelInterval;
	/// \~chinese
	/// <summary>
	/// 图像的Z方向像素间隔(mm)。
	/// </summary>
	/// \~english
	/// <summary>
    /// The pixel interval of Z direction, in mm.
	/// </summary>
	float ZInterval;
};

//call back types

/// \~chinese
/// <summary>
/// 设备状态改变回调函数类型。
/// </summary>
/// <param name="DeviceState">
/// 设备当前状态。
/// </param>
/// \~english
/// <summary>
/// Callback type of device state change callback.
/// </summary>
/// <param name="DeviceState">
/// Current state of device.
/// </param>
typedef void (*MPSizectorS_DeviceStateChangeCallBackType) (MPSizectorS_DeviceStateType DeviceState);

class MPSizectorS_DeviceStateChangeCallBackBase
{
public:
	virtual void Call(MPSizectorS_DeviceStateType param) = 0;
};

template <class T>
class MPSizectorS_DeviceStateChangeCallBackItem : public MPSizectorS_DeviceStateChangeCallBackBase
{
private:
	void (T::*CallBackFn_Ptr)(MPSizectorS_DeviceStateType);
	T* Obj_Ptr;

public:
	void Call(MPSizectorS_DeviceStateType param)
	{
		if (!Obj_Ptr)
			return;

		(Obj_Ptr->*CallBackFn_Ptr)(param);
	}

	MPSizectorS_DeviceStateChangeCallBackItem(void (T::*_CallBackFn_Ptr)(MPSizectorS_DeviceStateType), T* _Obj_Ptr):CallBackFn_Ptr(_CallBackFn_Ptr), Obj_Ptr(_Obj_Ptr) {}
};

/// \~chinese
/// 日志回调函数类型<summary>
/// 日志回调函数类型。
/// </summary>
/// <param name="Log">
/// 日志信息。
/// </param>
/// \~english
/// 日志回调函数类型<summary>
/// Callback type of log callback.
/// </summary>
/// <param name="Log">
/// Log information.
/// </param>
typedef void (*MPSizectorS_LogCallBackType) (const char* Log);

class MPSizectorS_LogCallBackBase
{
public:
	virtual void Call(const char* param) = 0;
};

template <class T>
class MPSizectorS_LogCallBackItem : public MPSizectorS_LogCallBackBase
{
private:
	void (T::*CallBackFn_Ptr)(const char*);
	T* Obj_Ptr;

public:
	void Call(const char* param)
	{
		if (!Obj_Ptr)
			return;

		(Obj_Ptr->*CallBackFn_Ptr)(param);
	}

	MPSizectorS_LogCallBackItem(void (T::*_CallBackFn_Ptr)(const char*), T* _Obj_Ptr):CallBackFn_Ptr(_CallBackFn_Ptr), Obj_Ptr(_Obj_Ptr) {}
};

/// \~chinese
/// <summary>
/// 数据回调函数类型。
/// </summary>
/// <param name="DataFormat">
/// 传回的数据格式。
/// </param>
/// <param name="DataFrame">
/// 传回的数据帧。
/// </param>
/// \~english
/// <summary>
/// Callback type of data callback.
/// </summary>
/// <param name="DataFormat">
/// Format of DataFrame
/// </param>
/// <param name="DataFrame">
/// Delievered data frame.
/// </param>
typedef void (*MPSizectorS_DataCallBackType) (MPSizectorS_DataFormatType DataFormat, MPSizectorS_DataFrameUndefinedStruct DataFrame);

class MPSizectorS_DataCallBackBase
{
public:
	virtual void Call(MPSizectorS_DataFormatType param1, MPSizectorS_DataFrameUndefinedStruct param2) = 0;
};

template <class T>
class MPSizectorS_DataCallBackItem : public MPSizectorS_DataCallBackBase
{
private:
	void (T::*CallBackFn_Ptr)(MPSizectorS_DataFormatType, MPSizectorS_DataFrameUndefinedStruct);
	T* Obj_Ptr;

public:
	void Call(MPSizectorS_DataFormatType param1, MPSizectorS_DataFrameUndefinedStruct param2)
	{
		if (!Obj_Ptr)
			return;

		(Obj_Ptr->*CallBackFn_Ptr)(param1, param2);
	}

	MPSizectorS_DataCallBackItem(void (T::*_CallBackFn_Ptr)(MPSizectorS_DataFormatType, MPSizectorS_DataFrameUndefinedStruct), T* _Obj_Ptr):CallBackFn_Ptr(_CallBackFn_Ptr), Obj_Ptr(_Obj_Ptr) {}
};

/// \~chinese
/// <summary>
/// head pack回调函数类型
/// </summary>
/// <param name="HeadPack">
/// 传回的head pack信息
/// </param>
/// \~english
/// <summary>
/// Callback type of head pack callback.
/// </summary>
/// <param name="HeadPack">
/// Delievered head pack.
/// </param>
typedef void (*MPSizectorS_HeadPackCallBackType) (MPSizectorS_HeadPackStructType HeadPack);

class MPSizectorS_HeadPackCallBackBase
{
public:
	virtual void Call(MPSizectorS_HeadPackStructType param) = 0;
};

template <class T>
class MPSizectorS_HeadPackCallBackItem : public MPSizectorS_HeadPackCallBackBase
{
private:
	void (T::*CallBackFn_Ptr)(MPSizectorS_HeadPackStructType);
	T* Obj_Ptr;

public:
	void Call(MPSizectorS_HeadPackStructType param)
	{
		if (!Obj_Ptr)
			return;

		(Obj_Ptr->*CallBackFn_Ptr)(param);
	}

	MPSizectorS_HeadPackCallBackItem(void (T::*_CallBackFn_Ptr)(MPSizectorS_HeadPackStructType), T* _Obj_Ptr):CallBackFn_Ptr(_CallBackFn_Ptr), Obj_Ptr(_Obj_Ptr) {}
};

/// \~chinese
/// <summary>
/// MPSizectorS接口类, 是用户进行3D相机所有控制的接口。
/// </summary>
/// \~english
/// <summary>
/// Interface class of MPSizectorS. It is used for all control functions of 3D camera.
/// </summary>
class DLL_EXPORT IMPSizectorS 
{
public: 
	//call back setting

	/// \~chinese
	/// <summary>
	/// 设置日志回调函数。
	/// </summary>
    /// <param name="CallBackFn">
    /// 日志回调函数的函数指针。
    /// </param>
	/// \~english
	/// <summary>
	/// Set log callback function.
	/// </summary>
    /// <param name="CallBackFn">
    /// Pointer to the log callback function.
    /// </param>
	virtual void SetLogCallBack(MPSizectorS_LogCallBackType CallBackFn) = 0; 

	/// \~chinese
	/// <summary>
	/// 设置日志回调函数。
	/// </summary>
    /// <param name="CallBackFn">
    /// 日志回调函数的函数指针。
    /// </param>
	/// <param name="Obj_Ptr">
    /// 日志回调函数的拥有对象的指针.
    /// </param>
	/// \~english
	/// <summary>
	/// Set log callback function.
	/// </summary>
    /// <param name="CallBackFn">
    /// Pointer to the log callback function.
    /// </param>
	/// <param name="Obj_Ptr">
    /// Pointer to the object that is owner of callback function.
    /// </param>
	template <class T> void SetLogCallBack(void (T::*CallBackFn)(const char*), T* Obj_Ptr)
	{
		if (m_MPSizectorS_LogCallBackBase)
			delete m_MPSizectorS_LogCallBackBase;

		m_MPSizectorS_LogCallBackBase = new MPSizectorS_LogCallBackItem<T>(CallBackFn, Obj_Ptr);
		SetLogCallBack(m_MPSizectorS_LogCallBackBase);
	}

	/// \~chinese
	/// <summary>
	/// 设置设备状态改变回调函数。
	/// </summary>
    /// <param name="CallBackFn">
    /// 设备状态改变回调函数的指针。
    /// </param>
	/// \~english
	/// <summary>
	/// Set device state change callback function.
	/// </summary>
    /// <param name="CallBackFn">
    /// Pointer to the device state change callback function.
    /// </param>
	virtual void SetDeviceStateChangeCallBack(MPSizectorS_DeviceStateChangeCallBackType CallBackFn) = 0;

	/// \~chinese
	/// <summary>
	/// 设置设备状态改变回调函数。
	/// </summary>
    /// <param name="CallBackFn">
    /// 设备状态改变回调函数的指针。
    /// </param>
	/// <param name="Obj_Ptr">
    /// 设备状态改变回调函数的拥有对象的指针.
    /// </param>
	/// \~english
	/// <summary>
	/// Set device state change callback function.
	/// </summary>
    /// <param name="CallBackFn">
    /// Pointer to the device state change callback function.
    /// </param>
	/// <param name="Obj_Ptr">
    /// Pointer to the object that is owner of callback function.
    /// </param>
	template <class T> void SetDeviceStateChangeCallBack(void (T::*CallBackFn)(MPSizectorS_DeviceStateType), T* Obj_Ptr)
	{
		if (m_MPSizectorS_DeviceStateChangeCallBackBase)
			delete m_MPSizectorS_DeviceStateChangeCallBackBase;

		m_MPSizectorS_DeviceStateChangeCallBackBase = new MPSizectorS_DeviceStateChangeCallBackItem<T>(CallBackFn, Obj_Ptr);
		SetDeviceStateChangeCallBack(m_MPSizectorS_DeviceStateChangeCallBackBase);
	}

	/// \~chinese
	/// <summary>
	/// 设置数据回调函数。
	/// </summary>
    /// <param name="CallBackFn">
    /// 数据回调函数的指针。
    /// </param>
	/// \~english
	/// <summary>
	/// Set the data callback function.
	/// </summary>
    /// <param name="CallBackFn">
    /// Pointer to the data callback function.
    /// </param>
	virtual void SetDataCallBack(MPSizectorS_DataCallBackType CallBackFn) = 0;

	/// \~chinese
	/// <summary>
	/// 设置数据回调函数。
	/// </summary>
    /// <param name="CallBackFn">
    /// 数据回调函数的指针。
    /// </param>
	/// <param name="Obj_Ptr">
    /// 数据回调函数的拥有对象的指针.
    /// </param>
	/// \~english
	/// <summary>
	/// Set the data callback function.
	/// </summary>
    /// <param name="CallBackFn">
    /// Pointer to the data callback function.
    /// </param>
	/// <param name="Obj_Ptr">
    /// Pointer to the object that is owner of callback function.
    /// </param>
	template <class T> void SetDataCallBack(void (T::*CallBackFn)(MPSizectorS_DataFormatType, MPSizectorS_DataFrameUndefinedStruct), T* Obj_Ptr)
	{
		if (m_MPSizectorS_DataCallBackBase)
			delete m_MPSizectorS_DataCallBackBase;

		m_MPSizectorS_DataCallBackBase = new MPSizectorS_DataCallBackItem<T>(CallBackFn, Obj_Ptr);
		SetDataCallBack(m_MPSizectorS_DataCallBackBase);
	}

	/// \~chinese
	/// <summary>
	/// 设置head pack回调函数。
	/// </summary>
    /// <param name="CallBackFn">
    /// head pack回调函数的指针。
    /// </param>
	/// \~english
	/// <summary>
	/// Set the head pack callback function.
	/// </summary>
    /// <param name="CallBackFn">
    /// Pointer to the head pack callback function.
    /// </param>
	virtual void SetHeadPackCallBack(MPSizectorS_HeadPackCallBackType CallBackFn) = 0;

	/// \~chinese
	/// <summary>
	/// 设置head pack回调函数。
	/// </summary>
    /// <param name="CallBackFn">
    /// head pack回调函数的指针。
    /// </param>
	/// <param name="Obj_Ptr">
    /// head pack回调函数的拥有对象的指针.
    /// </param>
	/// \~english
	/// <summary>
	/// Set the head pack callback function.
	/// </summary>
    /// <param name="CallBackFn">
    /// Pointer to the head pack callback function.
    /// </param>
	/// <param name="Obj_Ptr">
    /// Pointer to the object that is owner of callback function.
    /// </param>
	template <class T> void SetHeadPackCallBack(void (T::*CallBackFn)(MPSizectorS_HeadPackStructType), T* Obj_Ptr)
	{
		if (m_MPSizectorS_HeadPackCallBackBase)
			delete m_MPSizectorS_HeadPackCallBackBase;

		m_MPSizectorS_HeadPackCallBackBase = new MPSizectorS_HeadPackCallBackItem<T>(CallBackFn, Obj_Ptr);
		SetHeadPackCallBack(m_MPSizectorS_HeadPackCallBackBase);
	}

	/// \~chinese
	/// <summary>
	/// 刷新设备列表。
	/// </summary>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Refresh the device list.
	/// </summary>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool UpdateDeviceList(void) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取设备计数。
	/// </summary>
	/// <returns>
    /// 设备计数。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get total device number in the device list.
	/// </summary>
	/// <returns>
    /// Total device number.
    /// </returns>
	virtual int GetDeviceCount(void) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取设备列表中指定Index的设备信息。
	/// </summary>
    /// <param name="Index">
    /// 指定的Index。
    /// </param>
	/// <returns>
    /// 设备信息。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get the device info of device with specified index in the device list.
	/// </summary>
    /// <param name="Index">
    /// Specified index.
    /// </param>
	/// <returns>
    /// Device info.
    /// </returns>
	virtual MPSizectorS_DeviceInfoStructType GetDeviceInfo(int Index) = 0;

	//Connection Operations
	
	/// \~chinese
	/// <summary>
	/// 获取当前设备的设备信息。
	/// </summary>
	/// <returns>
    /// 当前设备的设备信息。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get the device info of current device.
	/// </summary>
	/// <returns>
    /// Current device info.
    /// </returns>
	virtual MPSizectorS_DeviceInfoStructType GetCurrentDeviceInfo(void) = 0; 
	
	/// \~chinese
	/// <summary>
	/// 设置自动重连功能的使能状态。自动重连功能默认使能。
	/// </summary>
    /// <param name="">
    /// 自动重连功能的使能状态。
    /// </param>
	/// \~english
	/// <summary>
	/// Set the enable state of auto-reconnect function. The auto-reconnect function is enabled in default.
	/// </summary>
    /// <param name="">
    /// Enable state of auto-reconnect function.
    /// </param>
	virtual void SetAutoReconnect(bool AutoReconnect) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取设备的当前状态。
	/// </summary>
	/// <returns>
    /// 设备的当前状态。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get current state of device.
	/// </summary>
	/// <returns>
    /// Device state.
    /// </returns>
	virtual MPSizectorS_DeviceStateType GetDeviceState(void) = 0; 
	
	/// \~chinese
	/// <summary>
	/// 打开指定设备。
	/// </summary>
    /// <param name="DeviceInfo">
    /// 指定设备的设备信息。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Open device.
	/// </summary>
    /// <param name="DeviceInfo">
    /// Device info of target device.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool Open(MPSizectorS_DeviceInfoStructType DeviceInfo) = 0; 
	
	/// \~chinese
	/// <summary>
	/// 重新建立连接。当自动重连功能被禁用时，调用该函数以恢复断开的连接。
	/// </summary>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Reconnect the device. When auto-reconnect function is disabled, use this function to reconnect the device once the connection is lost.
	/// </summary>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool Reconnect(void) = 0; 
	
	/// \~chinese
	/// <summary>
	/// 关闭当前连接。
	/// </summary>
	/// \~english
	/// <summary>
	/// Close current connection.
	/// </summary>
	virtual void Close(void) = 0;
	
	//Low Level Control Commands
	
	/// \~chinese
	/// <summary>
	/// 强制PHY重连，制造商调试功能。
	/// </summary>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Force PHY to reconnect. Vender debug function.
	/// </summary>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool PhyReconnect(void) = 0;
	
	/// \~chinese
	/// <summary>
	/// 复位PHY，制造商调试功能。
	/// </summary>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Reset PHY. Vender debug function.
	/// </summary>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool PhyReset(void) = 0;
	
	/// \~chinese
	/// <summary>
	/// 强制PHY断开连接，制造商调试功能。
	/// </summary>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Force PHY to disconnect. Vender debug function.
	/// </summary>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool PhyDisconnect(void) = 0;
	
	/// \~chinese
	/// <summary>
	/// 硬复位核心，制造商调试功能。
	/// </summary>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Hard reset the core. Vender debug function.
	/// </summary>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool CoreHardReset(void) = 0;
	
	/// \~chinese
	/// <summary>
	/// 软复位核心，制造商调试功能。
	/// </summary>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Soft reset the core. Vender debug function.
	/// </summary>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool CoreSoftReset(void) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取PHY固件版本，制造商调试功能。
	/// </summary>
    /// <param name="PhyFWVersion">
    /// 通过参考返回，PHY固件版本。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get the PHY firmware version. Vender debug function.
	/// </summary>
    /// <param name="PhyFWVersion">
    /// Return value by reference, PHY firmware version.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetPhyFWVersion(float *PhyFWVersion) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取PHY的实例ID，制造商调试功能。
	/// </summary>
    /// <param name="InstanceID">
    /// 通过参考返回，PHY实例ID。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get the PHY instance ID. Vender debug function.
	/// </summary>
    /// <param name="InstanceID">
    /// Return value by reference, PHY instance ID.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetPhyInstanceID(unsigned int* InstanceID) = 0;

	////Capture Control
	
	/// \~chinese
	/// <summary>
	/// 发送软件触发。
	/// </summary>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Fire software trigger.
	/// </summary>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool FireSoftwareTrigger(void) = 0;
	
	/// \~chinese
	/// <summary>
	/// 同步拍摄数据帧。该函数在成功获取一帧完整的数据帧，或超时之后返回。
	/// </summary>
    /// <param name="SoftwareTrigger">
    /// 是否要发送软件触发。
    /// </param>
    /// <param name="DataFormat">
    /// 通过参考返回，拍摄得到的数据帧的格式。
    /// </param>
    /// <param name="Data">
    /// 通过参考返回，拍摄得到的数据帧。
    /// </param>
	/// <param name="TimeOutMS">
    /// 最长等待时间，以ms为单位。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Synchronized snap frame. Function returns after captured valid data frame, or time out.
	/// </summary>
    /// <param name="SoftwareTrigger">
    /// Whether to send a software trigger or not.
    /// </param>
    /// <param name="DataFormat">
    /// Return value by reference, Data format of captured frame.
    /// </param>
    /// <param name="Data">
    /// Return value by reference, Captured data frame.
    /// </param>
	/// <param name="TimeOutMS">
    /// Timeout delay in ms.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool Snap(bool SoftwareTrigger, MPSizectorS_DataFormatType* DataFormat, MPSizectorS_DataFrameUndefinedStruct* Data, unsigned int TimeOutMS) = 0;
	
	////Camera setting
	
	//Flash operations
	
	/// \~chinese
	/// <summary>
	/// 将当前设置保存至FlashROM。将在设备上电时被调用。
	/// </summary>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Save current setting to FlashROM. It will be applied when device power up.
	/// </summary>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SaveSettingsAsDefault(void) = 0;
	
	/// \~chinese
	/// <summary>
	/// 调用FlashROM中保存的设置。
	/// </summary>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Apply the setting in FlashROM.
	/// </summary>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool LoadDefaultSettings(void) = 0;

	//Data Tag
	
	/// \~chinese
	/// <summary>
	/// 获取数据标签。
	/// </summary>
    /// <param name="DataTag">
    /// 通过参考返回，数据标签。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get data tag.
	/// </summary>
    /// <param name="DataTag">
    /// Return value by reference, data tag.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetDataTag(unsigned short* DataTag) = 0; 
	
	/// \~chinese
	/// <summary>
	/// 设定数据标签。
	/// </summary>
    /// <param name="DataTag">
    /// 数据标签。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set data tag.
	/// </summary>
    /// <param name="DataTag">
    /// Data tag.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetDataTag(unsigned short DataTag) = 0;

	//General Setting
	
	/// \~chinese
	/// <summary>
	/// 获取自动休眠使能状态。
	/// </summary>
    /// <param name="AutoSleepEnableState">
    /// 通过参考返回，自动休眠使能状态。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get auto-sleep enable state.
	/// </summary>
    /// <param name="AutoSleepEnableState">
    /// Return value by reference, auto-sleep enable state.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetAutoSleepEnableState(bool* AutoSleepEnableState) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定自动休眠使能状态。
	/// </summary>
    /// <param name="AutoSleepEnableState">
    /// 自动休眠使能状态。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set auto-sleep enable state.
	/// </summary>
    /// <param name="AutoSleepEnableState">
    /// Auto-sleep enable state.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetAutoSleepEnableState(bool AutoSleepEnableState) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取自动休眠延时。
	/// </summary>
    /// <param name="AutoSleepDelayMS">
    /// 通过参考返回，自动休眠延时。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get auto-sleep delay.
	/// </summary>
    /// <param name="AutoSleepDelayMS">
    /// Return value by reference, auto-sleep delay.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetAutoSleepDelayMS(unsigned short* AutoSleepDelayMS) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定自动休眠延时。
	/// </summary>
    /// <param name="AutoSleepDelayMS">
    /// 自动休眠延时。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set auto-sleep delay.
	/// </summary>
    /// <param name="AutoSleepDelayMS">
    /// Auto-sleep delay.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetAutoSleepDelayMS(unsigned short AutoSleepDelayMS) = 0;

	
	/// \~chinese
	/// <summary>
	/// 获取通用设置。
	/// </summary>
    /// <param name="GeneralSettings">
    /// 通过参考返回，通用设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get general setting.
	/// </summary>
    /// <param name="GeneralSettings">
    /// Return value by reference, general setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetGeneralSettings(MPSizectorS_GeneralSettingsStructType* GeneralSettings) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定通用设置。
	/// </summary>
    /// <param name="GeneralSettings">
    /// 通用设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set general setting.
	/// </summary>
    /// <param name="GeneralSettings">
    /// General setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetGeneralSettings(MPSizectorS_GeneralSettingsStructType GeneralSettings) = 0;

	//basic control
	
	/// \~chinese
	/// <summary>
	/// 获取暂停状态。
	/// </summary>
    /// <param name="HoldState">
    /// 通过参考返回，暂停状态。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get hold state.
	/// </summary>
    /// <param name="HoldState">
    /// Return value by reference, hold state.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetHoldState(bool* HoldState) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定暂停状态。
	/// </summary>
    /// <param name="HoldState">
    /// 暂停状态。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set hold state.
	/// </summary>
    /// <param name="HoldState">
    /// Hold state.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetHoldState(bool HoldState) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取像素合并使能状态。
	/// </summary>
    /// <param name="BinningState">
    /// 通过参考返回，像素合并使能状态。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get binning state.
	/// </summary>
    /// <param name="BinningState">
    /// Return value by reference, binning state.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetBinningState(bool* BinningState) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定像素合并使能状态。
	/// </summary>
    /// <param name="BinningState">
    /// 像素合并使能状态。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set binning state.
	/// </summary>
    /// <param name="BinningState">
    /// binning state.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetBinningState(bool BinningState) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取工作模式。
	/// </summary>
    /// <param name="WorkingMode">
    /// 通过参考返回，工作模式。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get working mode.
	/// </summary>
    /// <param name="WorkingMode">
    /// Return value by reference, working mode.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetWorkingMode(MPSizectorS_WorkingModeType* WorkingMode) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定工作模式。
	/// </summary>
    /// <param name="WorkingMode">
    /// 工作模式。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set working mode.
	/// </summary>
    /// <param name="WorkingMode">
    /// Working mode.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetWorkingMode(MPSizectorS_WorkingModeType WorkingMode) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取触发源。
	/// </summary>
    /// <param name="TriggerSource">
    /// 通过参考返回，触发源。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get trigger source.
	/// </summary>
    /// <param name="TriggerSource">
    /// Return value by reference, trigger source.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetTriggerSource(MPSizectorS_TriggerSourceType* TriggerSource) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定触发源。
	/// </summary>
    /// <param name="TriggerSource">
    /// 触发源。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set trigger source.
	/// </summary>
    /// <param name="TriggerSource">
    /// Trigger source.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetTriggerSource(MPSizectorS_TriggerSourceType TriggerSource) = 0;

	
	/// \~chinese
	/// <summary>
	/// 获取基础设置。
	/// </summary>
    /// <param name="BasicSettings">
    /// 通过参考返回，基础设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get basic setting.
	/// </summary>
    /// <param name="BasicSettings">
    /// Return value by reference, basic setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetBasicSettings(MPSizectorS_BasicSettingsStructType* BasicSettings) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定基础设置。
	/// </summary>
    /// <param name="BasicSettings">
    /// 基础设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set basic setting.
	/// </summary>
    /// <param name="BasicSettings">
    /// Basic setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetBasicSettings(MPSizectorS_BasicSettingsStructType BasicSettings) = 0;


	//exposure settings
	
	/// \~chinese
	/// <summary>
	/// 获取基础曝光设置。
	/// </summary>
    /// <param name="ExposureBasicSetting">
    /// 通过参考返回，基础曝光设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get exposure basic setting.
	/// </summary>
    /// <param name="ExposureBasicSetting">
    /// Return value by reference, exposure basic setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetExposureBasicSetting(MPSizectorS_ExposureBasicSettingStructType* ExposureBasicSetting) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定基础曝光设置。
	/// </summary>
    /// <param name="ExposureBasicSetting">
    /// 基础曝光设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set exposure basic setting.
	/// </summary>
    /// <param name="ExposureBasicSetting">
    /// Exposure basic setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetExposureBasicSetting(MPSizectorS_ExposureBasicSettingStructType ExposureBasicSetting) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取用户增益。
	/// </summary>
    /// <param name="UserGain">
    /// 通过参考返回，用户增益。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get user gain.
	/// </summary>
    /// <param name="UserGain">
    /// Return value by reference, user gain.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetUserGain(unsigned char* UserGain) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定用户增益。
	/// </summary>
    /// <param name="UserGain">
    /// 用户增益。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set user gain.
	/// </summary>
    /// <param name="UserGain">
    /// User gain.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetUserGain(unsigned char UserGain) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取3D拍摄第1曝光强度。
	/// </summary>
    /// <param name="ExposureIntensity3D_1st">
    /// 通过参考返回，3D拍摄第1曝光强度。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get 1st exposure intensity for 3D.
	/// </summary>
    /// <param name="ExposureIntensity3D_1st">
    /// Return value by reference, 1st exposure intensity for 3D.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetExposureIntensity3D_1st(float* ExposureIntensity3D_1st) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定3D拍摄第1曝光强度。
	/// </summary>
    /// <param name="ExposureIntensity3D_1st">
    /// 3D拍摄第1曝光强度。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set 1st exposure intensity for 3D.
	/// </summary>
    /// <param name="ExposureIntensity3D_1st">
    /// 1st exposure intensity for 3D.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetExposureIntensity3D_1st(float ExposureIntensity3D_1st) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取3D拍摄第2曝光强度。
	/// </summary>
    /// <param name="ExposureIntensity3D_2nd">
    /// 通过参考返回，3D拍摄第2曝光强度。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get 2nd exposure intensity for 3D.
	/// </summary>
    /// <param name="ExposureIntensity3D_2nd">
    /// Return value by reference, 2nd exposure intensity for 3D.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetExposureIntensity3D_2nd(float* ExposureIntensity3D_2nd) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定3D拍摄第2曝光强度。
	/// </summary>
    /// <param name="ExposureIntensity3D_2nd">
    /// 3D拍摄第2曝光强度。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set 2nd exposure intensity for 3D.
	/// </summary>
    /// <param name="ExposureIntensity3D_2nd">
    /// 2nd exposure intensity for 3D.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetExposureIntensity3D_2nd(float ExposureIntensity3D_2nd) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取3D拍摄第3曝光强度。
	/// </summary>
    /// <param name="ExposureIntensity3D_3rd">
    /// 通过参考返回，3D拍摄第3曝光强度。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get 3rd exposure intensity for 3D.
	/// </summary>
    /// <param name="ExposureIntensity3D_3rd">
    /// Return value by reference, 3rd exposure intensity for 3D.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetExposureIntensity3D_3rd(float* ExposureIntensity3D_3rd) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定3D拍摄第3曝光强度。
	/// </summary>
    /// <param name="ExposureIntensity3D_3rd">
    /// 3D拍摄第3曝光强度。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set 3rd exposure intensity for 3D.
	/// </summary>
    /// <param name="ExposureIntensity3D_3rd">
    /// 3rd exposure intensity for 3D.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetExposureIntensity3D_3rd(float ExposureIntensity3D_3rd) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取2D拍摄曝光强度。
	/// </summary>
    /// <param name="ExposureIntensity2D">
    /// 通过参考返回，2D拍摄曝光强度。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get exposure intensity for 2D.
	/// </summary>
    /// <param name="ExposureIntensity2D">
    /// Return value by reference, exposure intensity for 2D.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetExposureIntensity2D(float* ExposureIntensity2D) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定2D拍摄曝光强度。
	/// </summary>
    /// <param name="ExposureIntensity2D">
    /// 2D拍摄曝光强度。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set exposure intensity for 2D.
	/// </summary>
    /// <param name="ExposureIntensity2D">
    /// Exposure intensity for 2D.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetExposureIntensity2D(float ExposureIntensity2D) = 0;	

	
	/// \~chinese
	/// <summary>
	/// 获取曝光设置。
	/// </summary>
    /// <param name="ExposureSettings">
    /// 通过参考返回，曝光设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get exposure setting.
	/// </summary>
    /// <param name="ExposureSettings">
    /// Return value by reference, exposure setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetExposureSettings(MPSizectorS_ExposureSettingsStructType* ExposureSettings) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定曝光设置。
	/// </summary>
    /// <param name="ExposureSettings">
    /// 曝光设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set exposure setting.
	/// </summary>
    /// <param name="ExposureSettings">
    /// Exposure setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetExposureSettings(MPSizectorS_ExposureSettingsStructType ExposureSettings) = 0;

	
	//reconstruction settings
	
	/// \~chinese
	/// <summary>
	/// 获取过曝剔除阈值。
	/// </summary>
    /// <param name="OverExposureFilterThreshold">
    /// 通过参考返回，过曝剔除阈值。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get over-exposure filter threshold.
	/// </summary>
    /// <param name="OverExposureFilterThreshold">
    /// Return value by reference, over-exposure filter threshold.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetOverExposureFilterThreshold(unsigned char* OverExposureFilterThreshold) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定过曝剔除阈值。
	/// </summary>
    /// <param name="OverExposureFilterThreshold">
    /// 过曝剔除阈值。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set over-exposure filter threshold.
	/// </summary>
    /// <param name="OverExposureFilterThreshold">
    /// Over-exposure filter threshold.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetOverExposureFilterThreshold(unsigned char OverExposureFilterThreshold) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取有效点阈值0。
	/// </summary>
    /// <param name="ValidPointThreshold0">
    /// 通过参考返回，有效点阈值0。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get valid point threshold 0.
	/// </summary>
    /// <param name="ValidPointThreshold0">
    /// Return value by reference, valid point threshold 0.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetValidPointThreshold0(unsigned char* ValidPointThreshold0) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定有效点阈值0。
	/// </summary>
    /// <param name="ValidPointThreshold0">
    /// 有效点阈值0。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set valid point threshold 0.
	/// </summary>
    /// <param name="ValidPointThreshold0">
    /// Valid point threshold 0.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetValidPointThreshold0(unsigned char ValidPointThreshold0) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取有效点阈值1。
	/// </summary>
    /// <param name="ValidPointThreshold1">
    /// 通过参考返回，有效点阈值1。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get valid point threshold 1.
	/// </summary>
    /// <param name="ValidPointThreshold1">
    /// Return value by reference, valid point threshold 1.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetValidPointThreshold1(unsigned char* ValidPointThreshold1) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定有效点阈值1。
	/// </summary>
    /// <param name="ValidPointThreshold1">
    /// 有效点阈值1。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set valid point threshold 1.
	/// </summary>
    /// <param name="ValidPointThreshold1">
    /// Valid point threshold 1.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetValidPointThreshold1(unsigned char ValidPointThreshold1) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取飞点剔除阈值0。
	/// </summary>
    /// <param name="BurrFilterThreshold0">
    /// 通过参考返回，飞点剔除阈值0。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get burr filter threshold 0.
	/// </summary>
    /// <param name="BurrFilterThreshold0">
    /// Return value by reference, burr filter threshold 0.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetBurrFilterThreshold0(unsigned char* BurrFilterThreshold0) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定飞点剔除阈值0。
	/// </summary>
    /// <param name="BurrFilterThreshold0">
    /// 飞点剔除阈值0。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set burr filter threshold 0.
	/// </summary>
    /// <param name="BurrFilterThreshold0">
    /// Burr filter threshold 0.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetBurrFilterThreshold0(unsigned char BurrFilterThreshold0) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取飞点剔除阈值1。
	/// </summary>
    /// <param name="BurrFilterThreshold1">
    /// 通过参考返回，飞点剔除阈值1。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get burr filter threshold 1.
	/// </summary>
    /// <param name="BurrFilterThreshold1">
    /// Return value by reference, burr filter threshold 1.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetBurrFilterThreshold1(unsigned char* BurrFilterThreshold1) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定飞点剔除阈值1。
	/// </summary>
    /// <param name="BurrFilterThreshold1">
    /// 飞点剔除阈值1。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set burr filter threshold 1.
	/// </summary>
    /// <param name="BurrFilterThreshold1">
    /// Burr filter threshold 1.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetBurrFilterThreshold1(unsigned char BurrFilterThreshold1) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取预处理迭代次数。
	/// </summary>
    /// <param name="PreProcessLoopNum">
    /// 通过参考返回，预处理迭代次数。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get pre-process loop num.
	/// </summary>
    /// <param name="PreProcessLoopNum">
    /// Return value by reference, pre-process loop num.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetPreProcessLoopNum(unsigned char* PreProcessLoopNum) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定预处理迭代次数。
	/// </summary>
    /// <param name="PreProcessLoopNum">
    /// 预处理迭代次数。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set pre-process loop num.
	/// </summary>
    /// <param name="PreProcessLoopNum">
    /// Pre-process loop num.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetPreProcessLoopNum(unsigned char PreProcessLoopNum) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取预处理阈值。
	/// </summary>
    /// <param name="ProcessThreshold">
    /// 通过参考返回，预处理阈值。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get pre-process threshold.
	/// </summary>
    /// <param name="ProcessThreshold">
    /// Return value by reference, pre-process threshold.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetPreProcessThreshold(unsigned char* ProcessThreshold) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定预处理阈值。
	/// </summary>
    /// <param name="ProcessThreshold">
    /// 预处理阈值。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set pre-process threshold.
	/// </summary>
    /// <param name="ProcessThreshold">
    /// Pre-process threshold.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetPreProcessThreshold(unsigned char ProcessThreshold) = 0;

	
	/// \~chinese
	/// <summary>
	/// 获取重构设置。
	/// </summary>
    /// <param name="ReconstructionSettings">
    /// 通过参考返回，重构设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get reconstruction settings.
	/// </summary>
    /// <param name="ReconstructionSettings">
    /// Return value by reference, reconstruction settings.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetReconstructionSettings(MPSizectorS_ReconstructionSettingsStructType* ReconstructionSettings) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定重构设置。
	/// </summary>
    /// <param name="ReconstructionSettings">
    /// 重构设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set reconstruction settings.
	/// </summary>
    /// <param name="ReconstructionSettings">
    /// Reconstruction settings.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetReconstructionSettings(MPSizectorS_ReconstructionSettingsStructType ReconstructionSettings) = 0;

	//post process
	
	/// \~chinese
	/// <summary>
	/// 获取数据输出模式。
	/// </summary>
    /// <param name="DataOutMode">
    /// 通过参考返回，数据输出模式。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get data output mode.
	/// </summary>
    /// <param name="DataOutMode">
    /// Return value by reference, data output mode.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetDataOutMode(MPSizectorS_DataOutModeType* DataOutMode) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定数据输出模式。
	/// </summary>
    /// <param name="DataOutMode">
    /// 数据输出模式。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set data output mode.
	/// </summary>
    /// <param name="DataOutMode">
    /// Data output mode.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetDataOutMode(MPSizectorS_DataOutModeType DataOutMode) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取用户旋转平移矩阵使能状态。
	/// </summary>
    /// <param name="UserRTMatrixEnableState">
    /// 通过参考返回，用户旋转平移矩阵使能状态。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get user RT matrix enable state.
	/// </summary>
    /// <param name="UserRTMatrixEnableState">
    /// Return value by reference, user RT matrix enable state.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetUserRTMatrixEnableState(bool* UserRTMatrixEnableState) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定用户旋转平移矩阵使能状态。
	/// </summary>
    /// <param name="UserRTMatrixEnableState">
    /// 用户旋转平移矩阵使能状态。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set user RT matrix enable state.
	/// </summary>
    /// <param name="UserRTMatrixEnableState">
    /// User RT matrix enable state.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetUserRTMatrixEnableState(bool UserRTMatrixEnableState) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取用户旋转平移矩阵。
	/// </summary>
    /// <param name="UserRTMatrix">
    /// 通过参考返回，用户旋转平移矩阵。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get user RT matrix.
	/// </summary>
    /// <param name="UserRTMatrix">
    /// Return value by reference, user RT matrix.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetUserRTMatrix(MPSizectorS_RTMatrixStructType* UserRTMatrix) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定用户旋转平移矩阵。
	/// </summary>
    /// <param name="UserRTMatrix">
    /// 用户旋转平移矩阵。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set user RT matrix.
	/// </summary>
    /// <param name="UserRTMatrix">
    /// User RT matrix.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetUserRTMatrix(MPSizectorS_RTMatrixStructType UserRTMatrix) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取定点数映射设置。
	/// </summary>
    /// <param name="PointScaleSetting">
    /// 通过参考返回，定点数映射设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get point scale setting.
	/// </summary>
    /// <param name="PointScaleSetting">
    /// Return value by reference, point scale setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetPointScaleSetting(MPSizectorS_PointScaleSettingStructType* PointScaleSetting) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定定点数映射设置。
	/// </summary>
    /// <param name="PointScaleSetting">
    /// 定点数映射设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set point scale setting.
	/// </summary>
    /// <param name="PointScaleSetting">
    /// Point scale setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetPointScaleSetting(MPSizectorS_PointScaleSettingStructType PointScaleSetting) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取范围检查使能状态。
	/// </summary>
    /// <param name="RangeCheckEnableState">
    /// 通过参考返回，范围检查使能状态。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get range check enable state.
	/// </summary>
    /// <param name="RangeCheckEnableState">
    /// Return value by reference, range check enable state.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetRangeCheckEnableState(bool* RangeCheckEnableState) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定范围检查使能状态。
	/// </summary>
    /// <param name="RangeCheckEnableState">
    /// 范围检查使能状态。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set range check enable state.
	/// </summary>
    /// <param name="RangeCheckEnableState">
    /// Range check enable state.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetRangeCheckEnableState(bool RangeCheckEnableState) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取范围检查设置。
	/// </summary>
    /// <param name="RangeCheckSetting">
    /// 通过参考返回，范围检查设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get range check setting.
	/// </summary>
    /// <param name="RangeCheckSetting">
    /// Return value by reference, range check setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetRangeCheckSetting(MPSizectorS_RangeCheckSettingStructType* RangeCheckSetting) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定范围检查设置。
	/// </summary>
    /// <param name="RangeCheckSetting">
    /// 范围检查设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set range check setting.
	/// </summary>
    /// <param name="RangeCheckSetting">
    /// Range check setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetRangeCheckSetting(MPSizectorS_RangeCheckSettingStructType RangeCheckSetting) = 0;

	
	/// \~chinese
	/// <summary>
	/// 获取后处理设置。
	/// </summary>
    /// <param name="PostProcessSettings">
    /// 通过参考返回，后处理设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get post-process settings.
	/// </summary>
    /// <param name="PostProcessSettings">
    /// Return value by reference, post-process settings.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetPostProcessSettings(MPSizectorS_PostProcessSettingsStructType* PostProcessSettings) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定后处理设置。
	/// </summary>
    /// <param name="PostProcessSettings">
    /// 后处理设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set post-process settings.
	/// </summary>
    /// <param name="PostProcessSettings">
    /// Post-process settings.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetPostProcessSettings(MPSizectorS_PostProcessSettingsStructType PostProcessSettings) = 0;

	//IO Setting
	
	/// \~chinese
	/// <summary>
	/// 获取输出引脚寄存器值。
	/// </summary>
    /// <param name="EXTIOOutput">
    /// 通过参考返回，输出引脚寄存器值。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get output pin register value.
	/// </summary>
    /// <param name="EXTIOOutput">
    /// Return value by reference, output pin register value.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetEXTIOOutput(unsigned char* EXTIOOutput) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定输出引脚寄存器值。
	/// </summary>
    /// <param name="EXTIOOutput">
    /// 输出引脚寄存器值。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set output pin register value.
	/// </summary>
    /// <param name="EXTIOOutput">
    /// Output pin register value.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetEXTIOOutput(unsigned char EXTIOOutput) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取输出引脚0设置。
	/// </summary>
    /// <param name="EXTIOO0Setting">
    /// 通过参考返回，输出引脚0设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get output pin 0 setting.
	/// </summary>
    /// <param name="EXTIOO0Setting">
    /// Return value by reference, output pin 0 setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetEXTIO0Setting(MPSizectorS_OutputPinSettingStructType* EXTIOO0Setting) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定输出引脚0设置。
	/// </summary>
    /// <param name="EXTIOO0Setting">
    /// 输出引脚0设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set output pin 0 setting.
	/// </summary>
    /// <param name="EXTIOO0Setting">
    /// output pin 0 setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetEXTIO0Setting(MPSizectorS_OutputPinSettingStructType EXTIOO0Setting) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取输出引脚1设置。
	/// </summary>
    /// <param name="EXTIOO1Setting">
    /// 通过参考返回，输出引脚1设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get output pin 1 setting.
	/// </summary>
    /// <param name="EXTIOO1Setting">
    /// Return value by reference, output pin 1 setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetEXTIO1Setting(MPSizectorS_OutputPinSettingStructType* EXTIOO1Setting) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定输出引脚1设置。
	/// </summary>
    /// <param name="EXTIOO1Setting">
    /// 输出引脚1设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set output pin 1 setting.
	/// </summary>
    /// <param name="EXTIOO1Setting">
    /// Output pin 1 setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetEXTIO1Setting(MPSizectorS_OutputPinSettingStructType EXTIOO1Setting) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取硬件触发设置。
	/// </summary>
    /// <param name="HWTriggerSeting">
    /// 通过参考返回，硬件触发设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get hardware trigger setting.
	/// </summary>
    /// <param name="HWTriggerSeting">
    /// Return value by reference, hardware trigger setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetHWTriggerSetting(MPSizectorS_HWTriggerSettingStructType* HWTriggerSeting) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定硬件触发设置。
	/// </summary>
    /// <param name="HWTriggerSeting">
    /// 硬件触发设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set hardware trigger setting.
	/// </summary>
    /// <param name="HWTriggerSeting">
    /// Hardware trigger setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetHWTriggerSetting(MPSizectorS_HWTriggerSettingStructType HWTriggerSeting) = 0;

	
	/// \~chinese
	/// <summary>
	/// 获取输入引脚0设置。
	/// </summary>
    /// <param name="IOSettings">
    /// 通过参考返回，输入引脚0设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get input pin 0 setting.
	/// </summary>
    /// <param name="IOSettings">
    /// Return value by reference, input pin 0 setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetIOSettings(MPSizectorS_IOSettingsStructType* IOSettings) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定输入引脚0设置。
	/// </summary>
    /// <param name="IOSettings">
    /// 输入引脚0设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set input pin 0 setting.
	/// </summary>
    /// <param name="IOSettings">
    /// Input pin 0 setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetIOSettings(MPSizectorS_IOSettingsStructType IOSettings) = 0;

	
	/// \~chinese
	/// <summary>
	/// 获取输入引脚1设置。
	/// </summary>
    /// <param name="Settings">
    /// 通过参考返回，输入引脚1设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get input pin 1 setting.
	/// </summary>
    /// <param name="Settings">
    /// Return value by reference, input pin 1 setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetSettings(MPSizectorS_SettingsStructType* Settings) = 0;
	
	/// \~chinese
	/// <summary>
	/// 设定输入引脚1设置。
	/// </summary>
    /// <param name="Settings">
    /// 输入引脚1设置。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Set input pin 1 setting.
	/// </summary>
    /// <param name="Settings">
    /// Input pin 1 setting.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool SetSettings(MPSizectorS_SettingsStructType Settings) = 0;


	//States
	
	/// \~chinese
	/// <summary>
	/// 获取输入引脚寄存器值。
	/// </summary>
    /// <param name="EXTIOInput">
    /// 通过参考返回，输入引脚寄存器值。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get input pin register value.
	/// </summary>
    /// <param name="EXTIOInput">
    /// Return value by reference, input pin register value.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetEXTIOInput(unsigned char* EXTIOInput) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取核心温度反馈信息。
	/// </summary>
    /// <param name="TempCore">
    /// 通过参考返回，核心温度反馈信息。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get core temperature feedback information.
	/// </summary>
    /// <param name="TempCore">
    /// Return value by reference, core temperature feedback information.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetTempCore(MPSizectorS_TemperatureFeedbackStructType* TempCore) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取温度传感器0反馈信息。
	/// </summary>
    /// <param name="Temp0">
    /// 通过参考返回，温度传感器0反馈信息。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get temperature sensor 0 feedback information.
	/// </summary>
    /// <param name="Temp0">
    /// Return value by reference, temperature sensor 0 feedback information.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetTemp0(MPSizectorS_TemperatureFeedbackStructType* Temp0) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取温度传感器1反馈信息。
	/// </summary>
    /// <param name="Temp1">
    /// 通过参考返回，温度传感器1反馈信息。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get temperature sensor 1 feedback information.
	/// </summary>
    /// <param name="Temp1">
    /// Return value by reference, temperature sensor 1 feedback information.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetTemp1(MPSizectorS_TemperatureFeedbackStructType* Temp1) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取温度传感器2反馈信息。
	/// </summary>
    /// <param name="Temp2">
    /// 通过参考返回，温度传感器2反馈信息。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get temperature sensor 2 feedback information.
	/// </summary>
    /// <param name="Temp2">
    /// Return value by reference, temperature sensor 2 feedback information.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetTemp2(MPSizectorS_TemperatureFeedbackStructType* Temp2) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取设备启动时间。
	/// </summary>
    /// <param name="StartUpTimeMS">
    /// 通过参考返回，设备启动时间。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get device start-up time.
	/// </summary>
    /// <param name="StartUpTimeMS">
    /// Return value by reference, device start-up time.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetStartUpTimeMS(unsigned int* StartUpTimeMS) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取设备连接时间。
	/// </summary>
    /// <param name="ConnectionTimeMS">
    /// 通过参考返回，设备连接时间。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get device connection time.
	/// </summary>
    /// <param name="ConnectionTimeMS">
    /// Return value by reference, device connection time.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetConnectionTimeMS(unsigned int* ConnectionTimeMS) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取拍摄计数。
	/// </summary>
    /// <param name="SnapCnt">
    /// 通过参考返回，拍摄计数。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get snap count.
	/// </summary>
    /// <param name="SnapCnt">
    /// Return value by reference, snap count.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetSnapCnt(unsigned int* SnapCnt) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取传输重试总计数。
	/// </summary>
    /// <param name="TotalTransferRetryNum">
    /// 通过参考返回，传输重试总计数。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get total transfer retry count.
	/// </summary>
    /// <param name="TotalTransferRetryNum">
    /// Return value by reference, total transfer retry count.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetTotalTransferRetryNum(unsigned short* TotalTransferRetryNum) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取当前帧的传输重试计数。
	/// </summary>
    /// <param name="CurrentTransferRetryNum">
    /// 通过参考返回，当前帧的传输重试计数。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get current frame transfer retry count.
	/// </summary>
    /// <param name="CurrentTransferRetryNum">
    /// Return value by reference, current frame transfer retry count.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetCurrentTransferRetryNum(unsigned short* CurrentTransferRetryNum) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取拍摄重试总次数。
	/// </summary>
    /// <param name="TotalCaptureRetryNum">
    /// 通过参考返回，拍摄重试总次数。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get total capture retry count.
	/// </summary>
    /// <param name="TotalCaptureRetryNum">
    /// Return value by reference, total capture retry count.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetTotalCaptureRetryNum(unsigned short* TotalCaptureRetryNum) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取当前TSN。
	/// </summary>
    /// <param name="CurrentTSN">
    /// 通过参考返回，当前TSN。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get current TSN.
	/// </summary>
    /// <param name="CurrentTSN">
    /// Return value by reference, current TSN.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetCurrentTSN(MPSizectorS_TSNStructType* CurrentTSN) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取最后一次软件触发TSN。
	/// </summary>
    /// <param name="SoftwareTSN">
    /// 通过参考返回，最后一次软件触发TSN。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get last software TSN.
	/// </summary>
    /// <param name="SoftwareTSN">
    /// Return value by reference, last software TSN.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetSoftwareTSN(MPSizectorS_TSNStructType* SoftwareTSN) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取最后一次自动触发TSN。
	/// </summary>
    /// <param name="AutoTSN">
    /// 通过参考返回，最后一次自动触发TSN。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get last auto TSN.
	/// </summary>
    /// <param name="AutoTSN">
    /// Return value by reference, last auto TSN.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetAutoTSN(MPSizectorS_TSNStructType* AutoTSN) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取最后一次硬件触发TSN。
	/// </summary>
    /// <param name="HardwareTSN">
    /// 通过参考返回，最后一次硬件触发TSN。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get last hardware TSN.
	/// </summary>
    /// <param name="HardwareTSN">
    /// Return value by reference, last hardware TSN.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetHardwareTSN(MPSizectorS_TSNStructType* HardwareTSN) = 0;
	
	/// \~chinese
	/// <summary>
	/// 获取调试寄存器值。
	/// </summary>
    /// <param name="DebugRegisters">
    /// 通过参考返回，调试寄存器值。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get debug registers.
	/// </summary>
    /// <param name="DebugRegisters">
    /// Return value by reference, debug registers.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetDebugRegisters(unsigned int* DebugRegisters) = 0;

	
	/// \~chinese
	/// <summary>
	/// 获取设备全部状态信息。
	/// </summary>
    /// <param name="States">
    /// 通过参考返回，设备全部状态信息。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get full device state information.
	/// </summary>
    /// <param name="States">
    /// Return value by reference, full device state information.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	virtual bool GetStates(MPSizectorS_StatesStructType* States) = 0;
	
	/// \~chinese
	/// <summary>
	/// 默认析构函数。
	/// </summary>
	/// \~english
	/// <summary>
	/// Default destructor.
	/// </summary>
	virtual ~IMPSizectorS()
	{
		if (m_MPSizectorS_LogCallBackBase) delete m_MPSizectorS_LogCallBackBase;
		if (m_MPSizectorS_DeviceStateChangeCallBackBase) delete m_MPSizectorS_DeviceStateChangeCallBackBase;
		if (m_MPSizectorS_DataCallBackBase) delete m_MPSizectorS_DataCallBackBase;
		if (m_MPSizectorS_HeadPackCallBackBase) delete m_MPSizectorS_HeadPackCallBackBase;
	}

protected:
	virtual void SetLogCallBack(MPSizectorS_LogCallBackBase* CallBackFn) = 0;
	virtual void SetDeviceStateChangeCallBack(MPSizectorS_DeviceStateChangeCallBackBase* CallBackFn) = 0;
	virtual void SetDataCallBack(MPSizectorS_DataCallBackBase* CallBackFn) = 0;
	virtual void SetHeadPackCallBack(MPSizectorS_HeadPackCallBackBase* CallBackFn) = 0;

private:
	MPSizectorS_LogCallBackBase* m_MPSizectorS_LogCallBackBase;
	MPSizectorS_DeviceStateChangeCallBackBase* m_MPSizectorS_DeviceStateChangeCallBackBase;
	MPSizectorS_DataCallBackBase* m_MPSizectorS_DataCallBackBase;
	MPSizectorS_HeadPackCallBackBase* m_MPSizectorS_HeadPackCallBackBase;
}; 

//Factory for new MPSizector
/// \~chinese
/// <summary>
/// MPSizectorS的工厂类, 用于产生实例。
/// </summary>
/// \~english
/// <summary>
/// Factory class of MPSizectorS, used to generate instance and destruct instance.
/// </summary>
class DLL_EXPORT MPSizectorS_Factory
{
public :
	/// \~chinese
	/// <summary>
	/// 获取一个新的MPSizectorS实例。
	/// </summary>
	/// \~english
	/// <summary>
	/// Get a new instance of MPSizectorS.
	/// </summary>
	static IMPSizectorS* GetInstance(MPSizectorS_LogMediaType LogMedia = MPSizectorS_LogMediaType_Off);

	/// \~chinese
	/// <summary>
	/// 析构一个MPSizectorS实例 
	/// </summary>
	/// \~english
	/// <summary>
	/// Destruct MPSizectorS instance.
	/// </summary>
	static void DestructInstance(IMPSizectorS* Instance);
};

/// \~chinese
/// <summary>
/// Utils类, 包含数据转换、存储等辅助功能。
/// </summary>
/// \~english
/// <summary>
/// Utils class, including auxiliary functions like data conversion, data save load, etc.
/// </summary>
class DLL_EXPORT MPSizectorS_Utils
{
public:

	/// \~chinese
	/// <summary>
	/// 将回调函数提供的Undefined格式数据，转换为Float3D格式。
	/// </summary>
    /// <param name="Data">
    /// Undefined格式数据，内容必须是Float3D格式。
    /// </param>
	/// <returns>
    /// 转换得到的Float3D数据。
    /// </returns>
	/// \~english
	/// <summary>
	/// Convert Undefined data delievered by data callback to Float3D format. 
	/// </summary>
    /// <param name="Data">
    /// Data for Undefined format. The content must be of Float3D format.
    /// </param>
	/// <returns>
    /// Float3D result after conversion.
    /// </returns>
	static MPSizectorS_DataFrameFloat3DStruct ConvertToFloat3DFrame(MPSizectorS_DataFrameUndefinedStruct Data); 

	/// \~chinese
	/// <summary>
	/// 将回调函数提供的Undefined格式数据，转换为Fix3D格式。
	/// </summary>
    /// <param name="Data">
    /// Undefined格式数据，内容必须是Fix3D格式。
    /// </param>
	/// <returns>
    /// 转换得到的Fix3D数据。
    /// </returns>
	/// \~english
	/// <summary>
	/// Convert Undefined data delievered by data callback to Fix3D format. 
	/// </summary>
    /// <param name="Data">
    /// Data for Undefined format. The content must be of Fix3D format.
    /// </param>
	/// <returns>
    /// Fix3D result after conversion.
    /// </returns>
	static MPSizectorS_DataFrameFix3DStruct ConvertToFix3DFrame(MPSizectorS_DataFrameUndefinedStruct Data);

	/// \~chinese
	/// <summary>
	/// 将回调函数提供的Undefined格式数据，转换为2D格式。
	/// </summary>
    /// <param name="Data">
    /// Undefined格式数据，内容必须是2D格式。
    /// </param>
	/// <returns>
    /// 转换得到的2D数据。
    /// </returns>
	/// \~english
	/// <summary>
	/// Convert Undefined data delievered by data callback to 2D format. 
	/// </summary>
    /// <param name="Data">
    /// Data for Undefined format. The content must be of 2D format.
    /// </param>
	/// <returns>
    /// 2D result after conversion.
    /// </returns>
	static MPSizectorS_DataFrame2DStruct ConvertTo2DFrame(MPSizectorS_DataFrameUndefinedStruct Data);

	/// \~chinese
	/// <summary>
	/// 获取Fix3D格式数据的自动色谱反范围。
	/// </summary>
    /// <param name="Result">
    /// 通过参考返回，计算得到的自动色谱范围结果。
    /// </param>
	/// <param name="FrameInfo">
    /// 数据帧信息。
    /// </param>
	/// <param name="Data">
    /// 3D数据。
    /// </param>
	/// <param name="Stride">
    /// 相邻采样点的像素跨距。
    /// </param>
	/// <param name="DropRatio">
    /// 统计时丢弃的最大和最小点的数量占所有点的比例。
    /// </param>
	/// <param name="ReservedRatio">
    /// 色谱边缘预留比例。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get the auto color depth range of Fix3D. 
	/// </summary>
    /// <param name="Result">
    /// Return value by reference, auto color depth range result obtained after calculation.
    /// </param>
	/// <param name="FrameInfo">
    /// Data frame info.
    /// </param>
	/// <param name="Data">
    /// 3D point cloud data.
    /// </param>
	/// <param name="Stride">
    /// Adjacent sampling point pixel stride.
    /// </param>
	/// <param name="DropRatio">
    /// The ratio of dropped top and bottom data points when doing statistics.
    /// </param>
	/// <param name="ReservedRatio">
    /// The margin reserved at the boundary of color depth range.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	static bool GetAutoColorDepthRange_Fix3D(MPSizectorS_ColorDepthRangeStruct* Result, MPSizectorS_HeadPackStructType FrameInfo, MPSizectorS_DataPointFix3DStruct* Data, int Stride = 3, float DropRatio = 0.002f, float ReservedRatio = 0.05f);
	
	/// \~chinese
	/// <summary>
	/// 获取Float3D格式数据的自动色谱反范围。
	/// </summary>
    /// <param name="Result">
    /// 通过参考返回，计算得到的自动色谱范围结果。
    /// </param>
	/// <param name="FrameInfo">
    /// 数据帧信息。
    /// </param>
	/// <param name="Data">
    /// 3D数据。
    /// </param>
	/// <param name="Stride">
    /// 相邻采样点的像素跨距。
    /// </param>
	/// <param name="DropRatio">
    /// 统计时丢弃的最大和最小点的数量占所有点的比例。
    /// </param>
	/// <param name="ReservedRatio">
    /// 色谱边缘预留比例。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Get the auto color depth range of Float3D. 
	/// </summary>
    /// <param name="Result">
    /// Return value by reference, auto color depth range result obtained after calculation.
    /// </param>
	/// <param name="FrameInfo">
    /// Data frame info.
    /// </param>
	/// <param name="Data">
    /// 3D point cloud data.
    /// </param>
	/// <param name="Stride">
    /// Adjacent sampling point pixel stride.
    /// </param>
	/// <param name="DropRatio">
    /// The ratio of dropped top and bottom data points when doing statistics.
    /// </param>
	/// <param name="ReservedRatio">
    /// The margin reserved at the boundary of color depth range.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	static bool GetAutoColorDepthRange_Float3D(MPSizectorS_ColorDepthRangeStruct* Result, MPSizectorS_HeadPackStructType FrameInfo, MPSizectorS_DataPointFloat3DStruct* Data, int Stride = 3, float DropRatio = 0.002f, float ReservedRatio = 0.05f);

	
	/// \~chinese
	/// <summary>
	/// 保存Undefined格式数据到文件。
	/// </summary>
	/// <param name="DataFrame">
    /// 待保存的数据。
    /// </param>
	/// <param name="FileName">
    /// 目标文件名。
    /// </param>
	/// <param name="ColorDepthMin">
    /// 深度色谱范围最小值。
    /// </param>
	/// <param name="ColorDepthMax">
    /// 深度色谱范围最大值。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Save Undefined data to file. 
	/// </summary>
	/// <param name="DataFrame">
    /// Data frame to be saved.
    /// </param>
	/// <param name="FileName">
    /// File name to save.
    /// </param>
	/// <param name="ColorDepthMin">
    /// Min of color depth range.
    /// </param>
	/// <param name="ColorDepthMax">
    /// Max of color depth range.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	static bool Save(MPSizectorS_DataFrameUndefinedStruct DataFrame, char* FileName, float ColorDepthMin = 0, float ColorDepthMax = 0);

	/// \~chinese
	/// <summary>
	/// 从文件中读取Undefined格式数据。
	/// </summary>
	/// <param name="DataFrame">
    /// 通过参考返回，读取得到的数据。
    /// </param>
	/// <param name="FileName">
    /// 目标文件名。
    /// </param>
	/// <param name="ColorDepthMin">
    /// 深度色谱范围最小值。
    /// </param>
	/// <param name="ColorDepthMax">
    /// 深度色谱范围最大值。
    /// </param>
	/// <returns>
    /// 操作是否成功。成功为true, 失败为false。
    /// </returns>
	/// \~english
	/// <summary>
	/// Load Undefined data from file. 
	/// </summary>
	/// <param name="DataFrame">
    /// Return by reference, data frame loaded.
    /// </param>
	/// <param name="FileName">
    /// File name to load.
    /// </param>
	/// <param name="ColorDepthMin">
    /// Min of color depth range.
    /// </param>
	/// <param name="ColorDepthMax">
    /// Max of color depth range.
    /// </param>
	/// <returns>
    /// Success state of operation. Success is true, otherwise false.
    /// </returns>
	static bool Load(MPSizectorS_DataFrameUndefinedStruct* DataFrame, char* FileName, float* ColorDepthMin = NULL, float* ColorDepthMax = NULL);

	/// \~chinese
    /// <summary>
    /// 将MPSizectorS_DataFrameFloat3DStruct数据转换为RangeImage图像数据。
    /// </summary>
	/// <param name="src_frame">
	/// 3D帧数据。
	/// </param>
    /// <param name="dst_image">
	/// RangeImage指针，需先初始化。
	/// </param>
	/// \~english
	/// <summary>
    /// Convert MPSizectorS_DataFrameFloat3DStruct data to RangeImage image data.
    /// </summary>
	/// <param name="src_frame">
	/// 3D Frame.
	/// </param>
    /// <param name="dst_image">
	/// RangeImage pointer, should already be initialized
	/// </param>
	static void ConvertToRangeImage_Float3D(MPSizectorS_DataFrameFloat3DStruct* src_frame, RangeImage* dst_image);

	/// \~chinese
    /// <summary>
    /// 将MPSizectorS_DataFrameFix3DStruct数据转换为RangeImage图像数据。
    /// </summary>
	/// <param name="src_frame">
	/// 3D帧数据。
	/// </param>
    /// <param name="dst_image">
	/// RangeImage指针，需先初始化。
	/// </param>
	/// \~english
	/// <summary>
    /// Convert MPSizectorS_DataFrameFix3DStruct data to RangeImage image data.
    /// </summary>
	/// <param name="src_frame">
	/// 3D Frame.
	/// </param>
    /// <param name="dst_image">
	/// RangeImage pointer, should already be initialized
	/// </param>
	static void ConvertToRangeImage_Fix3D(MPSizectorS_DataFrameFix3DStruct* src_frame, RangeImage* dst_image);
};

extern "C"
{

	/// \~chinese
	/// <summary>
	/// 获取API版本号。
	/// </summary>
	/// \~english
	/// <summary>
	/// Get API Version. 
	/// </summary>
	DLL_EXPORT float GetAPIVersion();

	//Create and Delete

	/// \~chinese
	/// <summary>
	/// C语言风格函数，获取一个新的MPSizectorS实例。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. Get a new instance of MPSizectorS. \n
	/// </summary>
	DLL_EXPORT IMPSizectorS* MPSizectorS_Create(MPSizectorS_LogMediaType LogMedia);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，删除一个MPSizectorS实例。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. Delete a MPSizectorS instance. \n
	/// </summary>
	DLL_EXPORT void MPSizectorS_Delete(IMPSizectorS* pIMPSizectorS);

	//call back setting
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT void MPSizectorS_SetLogCallBack(IMPSizectorS* pIMPSizectorS, MPSizectorS_LogCallBackType CallBackFn); 
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT void MPSizectorS_SetDeviceStateChangeCallBack(IMPSizectorS* pIMPSizectorS, MPSizectorS_DeviceStateChangeCallBackType CallBackFn);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT void MPSizectorS_SetDataCallBack(IMPSizectorS* pIMPSizectorS, MPSizectorS_DataCallBackType CallBackFn);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT void MPSizectorS_SetHeadPackCallBack(IMPSizectorS* pIMPSizectorS, MPSizectorS_HeadPackCallBackType CallBackFn);

	//Device Enumeration
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_UpdateDeviceList(IMPSizectorS* pIMPSizectorS);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT int MPSizectorS_GetDeviceCount(IMPSizectorS* pIMPSizectorS);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT void MPSizectorS_GetDeviceInfo(IMPSizectorS* pIMPSizectorS, MPSizectorS_DeviceInfoStructType* pDeviceInfo, int Index);

	//Connection Operations
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT void MPSizectorS_GetCurrentDeviceInfo(IMPSizectorS* pIMPSizectorS, MPSizectorS_DeviceInfoStructType* pDeviceInfo); 
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT void MPSizectorS_SetAutoReconnect(IMPSizectorS* pIMPSizectorS, bool AutoReconnect);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT MPSizectorS_DeviceStateType MPSizectorS_GetDeviceState(IMPSizectorS* pIMPSizectorS); 
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_Open(IMPSizectorS* pIMPSizectorS, MPSizectorS_DeviceInfoStructType DeviceInfo); 
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_Reconnect(IMPSizectorS* pIMPSizectorS); 
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT void MPSizectorS_Close(IMPSizectorS* pIMPSizectorS);
	
	//Low Level Control Commands
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_PhyReconnect(IMPSizectorS* pIMPSizectorS);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_PhyReset(IMPSizectorS* pIMPSizectorS);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_PhyDisconnect(IMPSizectorS* pIMPSizectorS);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_CoreHardReset(IMPSizectorS* pIMPSizectorS);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_CoreSoftReset(IMPSizectorS* pIMPSizectorS);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT  bool MPSizectorS_GetPhyFWVersion(IMPSizectorS* pIMPSizectorS, float *PhyFWVersion);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT  bool MPSizectorS_GetPhyInstanceID(IMPSizectorS* pIMPSizectorS, unsigned int* InstanceID);

	////Capture Control
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_FireSoftwareTrigger(IMPSizectorS* pIMPSizectorS);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_Snap(IMPSizectorS* pIMPSizectorS, bool SoftwareTrigger, MPSizectorS_DataFormatType* DataFormat, MPSizectorS_DataFrameUndefinedStruct* Data, unsigned int TimeOutMS);
	
	////Camera setting
	
	//Flash operations
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SaveSettingsAsDefault(IMPSizectorS* pIMPSizectorS);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_LoadDefaultSettings(IMPSizectorS* pIMPSizectorS);

	//Data Tag
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetDataTag(IMPSizectorS* pIMPSizectorS, unsigned short* DataTag);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetDataTag(IMPSizectorS* pIMPSizectorS, unsigned short DataTag);

	//General Setting
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetAutoSleepEnableState(IMPSizectorS* pIMPSizectorS, bool* AutoSleepEnableState);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetAutoSleepEnableState(IMPSizectorS* pIMPSizectorS, bool AutoSleepEnableState);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetAutoSleepDelayMS(IMPSizectorS* pIMPSizectorS, unsigned short* AutoSleepDelayMS);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetAutoSleepDelayMS(IMPSizectorS* pIMPSizectorS, unsigned short AutoSleepDelayMS);

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetGeneralSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_GeneralSettingsStructType* GeneralSettings);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetGeneralSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_GeneralSettingsStructType GeneralSettings);

	//basic control
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetHoldState(IMPSizectorS* pIMPSizectorS, bool* HoldState);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetHoldState(IMPSizectorS* pIMPSizectorS, bool HoldState);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetBinningState(IMPSizectorS* pIMPSizectorS, bool* BinningState);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetBinningState(IMPSizectorS* pIMPSizectorS, bool BinningState);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetWorkingMode(IMPSizectorS* pIMPSizectorS, MPSizectorS_WorkingModeType* WorkingMode);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetWorkingMode(IMPSizectorS* pIMPSizectorS, MPSizectorS_WorkingModeType WorkingMode);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetTriggerSource(IMPSizectorS* pIMPSizectorS, MPSizectorS_TriggerSourceType* TriggerSource);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetTriggerSource(IMPSizectorS* pIMPSizectorS, MPSizectorS_TriggerSourceType TriggerSource);

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetBasicSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_BasicSettingsStructType* BasicSettings);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetBasicSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_BasicSettingsStructType BasicSettings);


	//exposure settings
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetExposureBasicSetting(IMPSizectorS* pIMPSizectorS, MPSizectorS_ExposureBasicSettingStructType* ExposureBasicSetting);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetExposureBasicSetting(IMPSizectorS* pIMPSizectorS, MPSizectorS_ExposureBasicSettingStructType ExposureBasicSetting);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetUserGain(IMPSizectorS* pIMPSizectorS, unsigned char* UserGain);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetUserGain(IMPSizectorS* pIMPSizectorS, unsigned char UserGain);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetExposureIntensity3D_1st(IMPSizectorS* pIMPSizectorS, float* ExposureIntensity3D_1st);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetExposureIntensity3D_1st(IMPSizectorS* pIMPSizectorS, float ExposureIntensity3D_1st);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetExposureIntensity3D_2nd(IMPSizectorS* pIMPSizectorS, float* ExposureIntensity3D_2nd);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetExposureIntensity3D_2nd(IMPSizectorS* pIMPSizectorS, float ExposureIntensity3D_2nd);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetExposureIntensity3D_3rd(IMPSizectorS* pIMPSizectorS, float* ExposureIntensity3D_3rd);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。\n
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n\n
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetExposureIntensity3D_3rd(IMPSizectorS* pIMPSizectorS, float ExposureIntensity3D_3rd);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetExposureIntensity2D(IMPSizectorS* pIMPSizectorS, float* ExposureIntensity2D);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetExposureIntensity2D(IMPSizectorS* pIMPSizectorS, float ExposureIntensity2D);	

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetExposureSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_ExposureSettingsStructType* ExposureSettings);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetExposureSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_ExposureSettingsStructType ExposureSettings);

	
	//reconstruction settings
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetOverExposureFilterThreshold(IMPSizectorS* pIMPSizectorS, unsigned char* OverExposureFilterThreshold);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetOverExposureFilterThreshold(IMPSizectorS* pIMPSizectorS, unsigned char OverExposureFilterThreshold);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetValidPointThreshold0(IMPSizectorS* pIMPSizectorS, unsigned char* ValidPointThreshold0);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetValidPointThreshold0(IMPSizectorS* pIMPSizectorS, unsigned char ValidPointThreshold0);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetValidPointThreshold1(IMPSizectorS* pIMPSizectorS, unsigned char* ValidPointThreshold1);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetValidPointThreshold1(IMPSizectorS* pIMPSizectorS, unsigned char ValidPointThreshold1);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetBurrFilterThreshold0(IMPSizectorS* pIMPSizectorS, unsigned char* BurrFilterThreshold0);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetBurrFilterThreshold0(IMPSizectorS* pIMPSizectorS, unsigned char BurrFilterThreshold0);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetBurrFilterThreshold1(IMPSizectorS* pIMPSizectorS, unsigned char* BurrFilterThreshold1);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetBurrFilterThreshold1(IMPSizectorS* pIMPSizectorS, unsigned char BurrFilterThreshold1);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetPreProcessLoopNum(IMPSizectorS* pIMPSizectorS, unsigned char* PreProcessLoopNum);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetPreProcessLoopNum(IMPSizectorS* pIMPSizectorS, unsigned char PreProcessLoopNum);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetPreProcessThreshold(IMPSizectorS* pIMPSizectorS, unsigned char* ProcessThreshold);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetPreProcessThreshold(IMPSizectorS* pIMPSizectorS, unsigned char ProcessThreshold);

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetReconstructionSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_ReconstructionSettingsStructType* ReconstructionSettings);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetReconstructionSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_ReconstructionSettingsStructType ReconstructionSettings);

	//post process
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetDataOutMode(IMPSizectorS* pIMPSizectorS, MPSizectorS_DataOutModeType* DataOutMode);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetDataOutMode(IMPSizectorS* pIMPSizectorS, MPSizectorS_DataOutModeType DataOutMode);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetUserRTMatrixEnableState(IMPSizectorS* pIMPSizectorS, bool* UserRTMatrixEnableState);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetUserRTMatrixEnableState(IMPSizectorS* pIMPSizectorS, bool UserRTMatrixEnableState);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetUserRTMatrix(IMPSizectorS* pIMPSizectorS, MPSizectorS_RTMatrixStructType* UserRTMatrix);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetUserRTMatrix(IMPSizectorS* pIMPSizectorS, MPSizectorS_RTMatrixStructType UserRTMatrix);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetPointScaleSetting(IMPSizectorS* pIMPSizectorS, MPSizectorS_PointScaleSettingStructType* PointScaleSetting);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetPointScaleSetting(IMPSizectorS* pIMPSizectorS, MPSizectorS_PointScaleSettingStructType PointScaleSetting);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetRangeCheckEnableState(IMPSizectorS* pIMPSizectorS, bool* RangeCheckEnableState);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetRangeCheckEnableState(IMPSizectorS* pIMPSizectorS, bool RangeCheckEnableState);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetRangeCheckSetting(IMPSizectorS* pIMPSizectorS, MPSizectorS_RangeCheckSettingStructType* RangeCheckSetting);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetRangeCheckSetting(IMPSizectorS* pIMPSizectorS, MPSizectorS_RangeCheckSettingStructType RangeCheckSetting);

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetPostProcessSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_PostProcessSettingsStructType* PostProcessSettings);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetPostProcessSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_PostProcessSettingsStructType PostProcessSettings);

	//IO Setting
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetEXTIOOutput(IMPSizectorS* pIMPSizectorS, unsigned char* EXTIOOutput);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetEXTIOOutput(IMPSizectorS* pIMPSizectorS, unsigned char EXTIOOutput);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetEXTIO0Setting(IMPSizectorS* pIMPSizectorS, MPSizectorS_OutputPinSettingStructType* EXTIOO0Setting);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetEXTIO0Setting(IMPSizectorS* pIMPSizectorS, MPSizectorS_OutputPinSettingStructType EXTIOO0Setting);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetEXTIO1Setting(IMPSizectorS* pIMPSizectorS, MPSizectorS_OutputPinSettingStructType* EXTIOO1Setting);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetEXTIO1Setting(IMPSizectorS* pIMPSizectorS, MPSizectorS_OutputPinSettingStructType EXTIOO1Setting);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetHWTriggerSetting(IMPSizectorS* pIMPSizectorS, MPSizectorS_HWTriggerSettingStructType* HWTriggerSeting);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetHWTriggerSetting(IMPSizectorS* pIMPSizectorS, MPSizectorS_HWTriggerSettingStructType HWTriggerSeting);

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetIOSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_IOSettingsStructType* IOSettings);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetIOSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_IOSettingsStructType IOSettings);

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_SettingsStructType* Settings);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_SetSettings(IMPSizectorS* pIMPSizectorS, MPSizectorS_SettingsStructType Settings);


	//States
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetEXTIOInput(IMPSizectorS* pIMPSizectorS, unsigned char* EXTIOInput);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetTempCore(IMPSizectorS* pIMPSizectorS, MPSizectorS_TemperatureFeedbackStructType* TempCore);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetTemp0(IMPSizectorS* pIMPSizectorS, MPSizectorS_TemperatureFeedbackStructType* Temp0);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetTemp1(IMPSizectorS* pIMPSizectorS, MPSizectorS_TemperatureFeedbackStructType* Temp1);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetTemp2(IMPSizectorS* pIMPSizectorS, MPSizectorS_TemperatureFeedbackStructType* Temp2);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetStartUpTimeMS(IMPSizectorS* pIMPSizectorS, unsigned int* StartUpTimeMS);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetConnectionTimeMS(IMPSizectorS* pIMPSizectorS, unsigned int* ConnectionTimeMS);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetSnapCnt(IMPSizectorS* pIMPSizectorS, unsigned int* SnapCnt);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetTotalTransferRetryNum(IMPSizectorS* pIMPSizectorS, unsigned short* TotalTransferRetryNum);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetCurrentTransferRetryNum(IMPSizectorS* pIMPSizectorS, unsigned short* CurrentTransferRetryNum);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetTotalCaptureRetryNum(IMPSizectorS* pIMPSizectorS, unsigned short* TotalCaptureRetryNum);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetCurrentTSN(IMPSizectorS* pIMPSizectorS, MPSizectorS_TSNStructType* CurrentTSN);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetSoftwareTSN(IMPSizectorS* pIMPSizectorS, MPSizectorS_TSNStructType* SoftwareTSN);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetAutoTSN(IMPSizectorS* pIMPSizectorS, MPSizectorS_TSNStructType* AutoTSN);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetHardwareTSN(IMPSizectorS* pIMPSizectorS, MPSizectorS_TSNStructType* HardwareTSN);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetDebugRegisters(IMPSizectorS* pIMPSizectorS, unsigned int* DebugRegisters);

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_GetStates(IMPSizectorS* pIMPSizectorS, MPSizectorS_StatesStructType* States);

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT MPSizectorS_DataFrameFloat3DStruct MPSizectorS_Utils_ConvertToFloat3DFrame(MPSizectorS_DataFrameUndefinedStruct Data); 
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT MPSizectorS_DataFrameFix3DStruct MPSizectorS_Utils_ConvertToFix3DFrame(MPSizectorS_DataFrameUndefinedStruct Data);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT MPSizectorS_DataFrame2DStruct MPSizectorS_Utils_ConvertTo2DFrame(MPSizectorS_DataFrameUndefinedStruct Data);

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_Utils_GetAutoColorDepthRange_Fix3D(MPSizectorS_ColorDepthRangeStruct* Result, MPSizectorS_HeadPackStructType FrameInfo, MPSizectorS_DataPointFix3DStruct* Data, int Stride = 3, float DropRatio = 0.002f, float ReservedRatio = 0.05f);
	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_Utils_GetAutoColorDepthRange_Float3D(MPSizectorS_ColorDepthRangeStruct* Result, MPSizectorS_HeadPackStructType FrameInfo, MPSizectorS_DataPointFloat3DStruct* Data, int Stride = 3, float DropRatio = 0.002f, float ReservedRatio = 0.05f);


	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_Utils_Save(MPSizectorS_DataFrameUndefinedStruct DataFrame, char* FileName, float ColorDepthMin = 0, float ColorDepthMax = 0);

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT bool MPSizectorS_Utils_Load(MPSizectorS_DataFrameUndefinedStruct* DataFrame, char* FileName, float* ColorDepthMin = NULL, float* ColorDepthMax = NULL);

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT void MPSizectorS_Utils_ConvertToRangeImage_Float3D(MPSizectorS_DataFrameFloat3DStruct* src_frame, RangeImage* dst_image);

	/// \~chinese
	/// <summary>
	/// C语言风格函数，参考IMPSizectorS类中对应函数的说明。
	/// </summary>
	/// \~english
	/// <summary>
	/// C-style function. See the illustration of corresponding member of IMPSizector. \n
	/// </summary>
	DLL_EXPORT void MPSizectorS_Utils_ConvertToRangeImage_Fix3D(MPSizectorS_DataFrameFix3DStruct* src_frame, RangeImage* dst_image);

}

#endif